给docker container存档
本文介绍如何保存一个本地的docker image,然后把它push到docker hub里面去。
假设我们做好了一个本地的container,里面的相关配置都做好了,然后要把它保存到docker hub里面去,方便日后使用,首先是要用docker ps -a
命令找到这个container的id:
我这里要保存的container叫做naughty_shtern
,它的ID是af782fb203bb
。下一步是使用commit
命令来保存这个container:
$ docker commit naughty_shtern
sha256:4578f532cae6fbf08690713d5f2640aaa858ac946c0b497c4cf0097d84a366f8
这样,这个container就被保存为image了。可以使用docker image ls
命令查看:
可以看到这个image被创建好了。然后我们要 tag这个image:
$ docker tag weli/pycparser-demo 4578f532cae6
如上所示,我们把这个image根据它的id赋予了tag name,叫做weli/pycparser-demo
。
这个weli
是我在dockerhub上面的用户名:
所以我们的image的tag name里必须要对应我们的docker hub用户名,否则是无法正确push的。
接下来就是push这个image即可:
$ docker push weli/pycparser-demo
The push refers to repository [docker.io/weli/pycparser-demo]
0b25d8dec73c: Pushing [=================> ] 231.8MB/657.7MB
f0c6c5fac7cd: Pushed
9105516728d1: Pushed
7cd8d88f004d: Pushed
c4f3ae597765: Pushing [=======================================> ] 339MB/429.6MB
如果你push失败了,要看看自己的docker是不是已经登录了docker hub的账号:
$ docker login
Authenticating with existing credentials...
Login Succeeded
一般image都会比较大,所以push的时间比较长,需要耐心等待,等待push完成:
$ docker push weli/pycparser-demo
The push refers to repository [docker.io/weli/pycparser-demo]
0b25d8dec73c: Pushed
f0c6c5fac7cd: Pushed
9105516728d1: Pushed
7cd8d88f004d: Pushed
c4f3ae597765: Pushed
latest: digest: sha256:e4724633da6fd86b1e75ddc1290eaa08eb0e21a7f40d5454a82bdf01afaf244d size: 1374
完成后,就可以在自己的docker hub空间页面里看到了:
这样,我们就可以把这个image分享给别人使用:
如上所示,我们就把本地对container所做的所有配置修改,都保存到了docker hub上。以后别的用户想使用这个image,从docker hub上面pull这个image就可以了:
$ docker pull weli/pycparser-demo
这个就是容器化带来的好处:我们做一份存档,别的用户可以拿过来这份存档,在自己的工作环境中使用。
关于如何pull一个docker image,然后创建本地容器并启动,可以看我之前写的这篇文档: