本文共 1494 字,大约阅读时间需要 4 分钟。
根据上的问答和本人的实践,在docker容器内创建文件和安装软件,做下面的操作都不会丢失数据和软件:A. exitsudo docker start b430d6f4ff00
B. sudo docker stop b430d6f4ff00sudo docker start b430d6f4ff00
C. reboot host
Do I lose my data when the container exits?Not at all! Any data that your application writes to disk gets preserved in its container until you explicitly delete the container. The file system for the container persists even after the container halts.
另外,如果想对容器执行命令,可以使用exec选项:$ sudo docker exec -d ubuntu_bash touch /tmp/execWorks容器中以后台进程运行touch /tmp/execWorks命令(就是在/tmp目录下创建一个新的文件execWorks)
另外有人想直接用ssh去连接上容器的想法,虽然可以,但是有很多弊端,而且docker已经提供了容器内执行的命令,没有必要再折腾每一个容器为sshd服务器具体为什么不使用,可以看下这篇文章:
参考:
容器转成镜像:sudo docker commit <CONTAINER ID> imagename01
容器转成文件:sudo docker export <CONTAINER ID> > /home/export.tar
镜像转成文件:sudo docker save imagename01 > /home/save.tar注:一般情况下,save.tar比export.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata
文件转成镜像:cat /home/export.tar | sudo docker import - imagename02:latest
save.tar文件转成镜像:docker load < /home/save.tar
查看转成的镜像:sudo docker images
注意:这里一个镜像经过n次转化之后,可以用sudo docker images --tree查看历史,用docker tag <LAYER ID> <IMAGE NAME>你可以回到某个层(只针对save命令可以回到某个层!)