容器与镜像可以随时的转换,如图所示

除了dockerfile外,其他的我们一一来做,首先是我们需要一个dockerhub的账号
从dockerhub上pull镜像
[root@node7 ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
000eee12ec04: Pull complete
eb22865337de: Pull complete
bee5d581ef8b: Pull complete
Digest: sha256:50cf965a6e08ec5784009d0fccb380fc479826b6e0e65684d9879170a9df8566
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
修改tag
[root@node7 ~]# docker tag busybox ouddd/busybox:v0.1
登录
[root@node7 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: ouddd
Password:
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
重新pull
[root@node7 ~]# docker push ouddd/busybox:v0.1
The push refers to repository [docker.io/ouddd/busybox]
eac247cb7af5: Mounted from library/busybox
v0.1: digest: sha256:24fd20af232ca4ab5efbf1aeae7510252e2b60b15e9a78947467340607cd2ea2 size: 527
run命令,并且做了一些操作。
[root@node7 ~]# docker run -it --name b1 busybox sh
/ # ls
bin dev etc home proc root sys tmp usr var
/ # mkdir -p /data/html
/ # echo "hello busybox" >> /data/html/index.html
commit,重新打开一个终端
[root@node7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0165e61d2221 busybox "sh" 2 minutes ago Up 2 minutes b1
[root@node7 ~]# docker commit -p -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' b1 ouddd/web:v0.1
sha256:01451ccb4b4b5d17c10f23465b6c603fbcd3a97e26550eb548e828223cc20dfb
通过commit命令 我们就可以重新生成一个镜像了,并且我们修改原来的CMD。
当我们重新run的时候,我们之前做的操作已经被保存下来了。
[root@node7 ~]# docker run -it --name b2 ouddd/web:v0.1 sh
/ # ls
bin data dev etc home proc root sys tmp usr var
/ # cat /data/html/index.html
hello busybox
类似的stop/start/restart等
[root@node7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb8d2c61dd80 ouddd/web:v0.1 "/bin/httpd -f -h /d…" 5 seconds ago Up 4 seconds b2
[root@node7 ~]# docker stop cb8d2c61dd80
cb8d2c61dd80
[root@node7 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb8d2c61dd80 ouddd/web:v0.1 "/bin/httpd -f -h /d…" 34 seconds ago Exited (137) 9 seconds ago b2
[root@node7 ~]# docker start cb8d2c61dd80
cb8d2c61dd80
[root@node7 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb8d2c61dd80 ouddd/web:v0.1 "/bin/httpd -f -h /d…" 48 seconds ago Up 2 seconds b2
[root@node7 ~]# docker restart cb8d2c61dd80
cb8d2c61dd80
[root@node7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb8d2c61dd80 ouddd/web:v0.1 "/bin/httpd -f -h /d…" About a minute ago Up 3 seconds b2
如果我们想把一个镜像传到另一台主机上,应该怎么办呢,这个时候就用到了save和load了。
[root@node7 ~]# docker save ouddd/web:v0.1 -o web.tar
[root@node7 ~]# ls
web.tar
[root@node7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@node7 ~]# docker load -i web.tar
6995626d0293: Loading layer [==================================================>] 5.12kB/5.12kB
Loaded image: ouddd/web:v0.1
[root@node7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ouddd/web v0.1 01451ccb4b4b 9 minutes ago 1.22MB
本文介绍了如何在Docker中进行容器与镜像的转换。内容包括从Dockerhub拉取镜像、修改镜像标签、登录、重新拉取、运行容器并执行操作、使用commit保存修改、通过CMD命令调整、以及使用stop/start/restart等管理操作。此外,还讲解了如何使用save和load命令将镜像传输到其他主机。

被折叠的 条评论
为什么被折叠?



