在前面的文章中系统的介绍了Docker镜像的管理以及Docker中容器的管理,和使用Dockerfile来针对主流编程语言的环境部署。下面详细的概述下Docker中镜像的发布以及Docker中镜像发布的详细过程。
首先在https://hub.docker.com/地址注册一个账户。如果想把自己的镜像发布到dockerhub的地址,那么镜像的名称必须是name/imageName如image的名称为hello 那么要发布的镜像名称就为:wuyashare/hello,如果不这样处理的话,进行push的时候,就会提示没有权限的操作,这点需要特别的注意。下面详细的演示发布镜像的过程,具体如下:
#登录到dockerhub
[root@wuyaShare ~]# docker login
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
#查看已打包的镜像文件
[root@wuyaShare ~]# docker image ls | grep flask
flask_web latest a729b9e871d5 20 hours ago 481MB
#修改镜像文件为符合push的名称
[root@wuyaShare ~]# docker tag a729b9e871d5 wuyashare/book
[root@wuyaShare ~]# docker image ls | grep book
wuyashare/book latest a729b9e871d5 20 hours ago 481MB
#发布镜像到dockerhub
[root@wuyaShare ~]# docker push wuyashare/book:latest
The push refers to repository [docker.io/wuyashare/book]
18a0c85cec57: Pushed
ccddeef0e471: Pushed
0aa6da94c8d9: Pushed
bf30ad1ae062: Pushed
3f731ba12c3e: Pushed
aed45bc432f2: Pushed
703c251de224: Pushed
36f20b3f9e91: Pushed
fb82b029bea0: Mounted from library/centos
latest: digest: sha256:56a92f3d696e0ac4d49746a63d2c6f384357670d7eb2011c3653509a9c6b0e84 size: 2204下来到自己的dockerhub的主页,就可以看到发布的镜像信息了,具体如下所示:

当然下来就可以获取自己发布的镜像了,具体如下所示:
#从dockerhub获取镜像信息
[root@wuyaShare ~]# docker pull wuyashare/book
Using default tag: latest
latest: Pulling from wuyashare/book
9b4ebb48de8d: Already exists
a9c452da1e09: Pull complete
c3b21741ca1e: Pull complete
2daa5f93af93: Pull complete
99a143663da8: Pull complete
6ddb7dd30ad9: Pull complete
86969619219d: Pull complete
26db951a2c92: Pull complete
8757f98f9b66: Pull complete
Digest: sha256:56a92f3d696e0ac4d49746a63d2c6f384357670d7eb2011c3653509a9c6b0e84
Status: Downloaded newer image for wuyashare/book:latest
docker.io/wuyashare/book:latest
#运行镜像
[root@wuyaShare ~]# docker run -it --rm wuyashare/book:latest
* Serving Flask app 'app' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://172.18.0.2:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 105-275-560
#获取运行的容器ID的信息
docker ps -a | grep book
b13de0ca638f wuyashare/book:latest "python3 app.py" 2 minutes ago Up About a minute 5000/tcp focused_pasteur
#进入正在运行的容器
[root@wuyaShare ~]# docker exec -it b13de0ca638f bash
[root@b13de0ca638f opt]# ls
app.py
[root@b13de0ca638f opt]#如上,可以看到,我们通过Dockerfile构建一个镜像后,可以把镜像文件发布到dockerhub中,这样不管是自己还是其他的人员都是可以获取这个镜像文件,然后对它进行运行,从而提供具体的服务。比如您编写了一个测试的工具,想让别人使用它,那么可以发布成镜像,然后对镜像运行后,这样直接可以运行,而对方不需要刻意搭建运行这个测试工具的环境。感谢您的阅读,后续会持续的进行更新。