容器与镜像的转换

本文介绍了如何在Docker中进行容器与镜像的转换。内容包括从Dockerhub拉取镜像、修改镜像标签、登录、重新拉取、运行容器并执行操作、使用commit保存修改、通过CMD命令调整、以及使用stop/start/restart等管理操作。此外,还讲解了如何使用save和load命令将镜像传输到其他主机。

容器与镜像可以随时的转换,如图所示
在这里插入图片描述
除了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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值