kubernetes基础之docker容器镜像转化、迁移的实现
  zZHnZavbRDNq 2023年11月02日 101 0


容器镜像转化、迁移的实现

在很多的场景之下我们需要将容器与镜像之间进行相互的转化,比如说测试环境的迁移

第一、容器与镜像之间的相互转化

容器转化为镜像
[root@localhost ~]# docker rm $(docker ps -aq)    #删除之前的容器
8fda22d309a7
ddde61f54bfc
[root@localhost ~]# docker run -d --name=web1 nginx   #创建一个web1容器
a99cd7472522c44c4d1ebc77b55164b9cb126233c00718212c50b46a34e0f1f0
[root@localhost ~]# docker ps -a   #查看当前的容器
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS     NAMES
a99cd7472522   nginx     "/docker-entrypoint.…"   10 seconds ago   Up 6 seconds   80/tcp    web1
[root@localhost ~]# docker export web1 > web1.tar    #利用export命令将容器归当成tar包
[root@localhost ~]# ls
nginx.tar  vol  web  web1.tar  web1.txt  web2.txt
[root@localhost ~]# docker images   #查看当前镜像
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    f6d0b4767a6c   7 weeks ago   133MB
[root@localhost ~]# docker import web1.tar nginx:v1   #利用insport命令,将tar包生成镜像。
sha256:b9ffb514da6132b9e0c65112148f73e8528182f7f24027bf27d481113857861e
[root@localhost ~]# docker images   #再次查看镜像,已经生成
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        v1        b9ffb514da61   5 seconds ago   131MB
nginx        latest    f6d0b4767a6c   7 weeks ago     133MB
镜像转为容器
[root@localhost ~]# docker images   #查看当前镜像
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        v1        b9ffb514da61   9 minutes ago   131MB
nginx        latest    f6d0b4767a6c   7 weeks ago     133MB
[root@localhost ~]# docker run -d --name=web2 nginx:v1   #用刚刚生成的镜像,创建一个容器,报错没有cmd
docker: Error response from daemon: No command specified.
See 'docker run --help'.

[root@localhost ~]# docker image inspect nginx:v1 | grep -i cmd   ##查看镜像的cmd详情,为null,生成容器的时候需要添加cmd
            "Cmd": null,
            "Cmd": null,

[root@localhost ~]# docker run -dt --name=web2 nginx:v1 /bin/bash   ##添加cmd后,再次尝试创建容器,成功
57d4bfecb625d20fedcb3bc94cc22b66f6a85544b105af0e0d7372ecb192e74a
[root@localhost ~]# docker ps -a   #查看容器
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS     NAMES
57d4bfecb625   nginx:v1   "/bin/bash"              4 seconds ago    Up 3 seconds              web2
a99cd7472522   nginx      "/docker-entrypoint.…"   15 minutes ago   Up 15 minutes   80/tcp    web1

第二、镜像的转移

[root@localhost ~]# docker save nginx:v1 > nginx_v1.tar   ##利用save命令,将镜像打成tar包
[root@localhost ~]# docker image rm nginx:v1   #删除掉这个镜像,验证一会生成,这个报错是说明还有容器在使用这个镜像
Error response from daemon: conflict: unable to remove repository reference "nginx:v1" (must force) - container 57d4bfecb625 is using its referenced image b9ffb514da61
[root@localhost ~]# docker stop web2 #停止容器
web2
[root@localhost ~]# docker rm web2   #删除容器
web2
[root@localhost ~]# docker image rm nginx:v1  #删除镜像
Untagged: nginx:v1
Deleted: sha256:b9ffb514da6132b9e0c65112148f73e8528182f7f24027bf27d481113857861e
Deleted: sha256:8f6cb55ae698dfc2dc74577775f1bcbed1d48f72213bb6097207631cce9db58a
[root@localhost ~]# docker images   #查看当前已经没有了nginx:v1镜像
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    f6d0b4767a6c   7 weeks ago   133MB
[root@localhost ~]# docker load < nginx_v1.tar   #利用load命令,将tar包导入成镜像
8f6cb55ae698: Loading layer [==================================================>]  135.4MB/135.4MB
Loaded image: nginx:v1
[root@localhost ~]# docker images  #镜像已经成功导入
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        v1        b9ffb514da61   16 minutes ago   131MB
nginx        latest    f6d0b4767a6c   7 weeks ago      133MB

[root@localhost ~]# docker run -dt --name=web2 nginx:v1 /bin/bash   #可以正常的创建容器
1107dc01eaa4480adb1332e1b152429fc53953e8a2705c290c79ce1b4d5a5ec3
[root@localhost ~]# docker ps -a   #查看容器
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS     NAMES
1107dc01eaa4   nginx:v1   "/bin/bash"              8 seconds ago    Up 7 seconds              web2
a99cd7472522   nginx      "/docker-entrypoint.…"   19 minutes ago   Up 19 minutes   80/tcp    web1
[root@localhost ~]#

第三、注意

    kubernetes基础之docker容器镜像转化、迁移的实现_kubernetes


    【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

    1. 分享:
    最后一次编辑于 2023年11月08日 0

    暂无评论

    推荐阅读
    zZHnZavbRDNq