阿男的小窝

View the Project on GitHub

给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,然后创建本地容器并启动,可以看我之前写的这篇文档: