Docker 镜像和容器的导入导出及常用命令

12a204a79d26f070b39a54ec961bb26a.gif

作者 | 微枫Micromaple

来源 | CSDN博客

5e33ced2ee42b9864ce99e3149282fe0.png

Docker 镜像和容器的导入导出

1.1 镜像的导入导出

1.1.1 镜像的保存

  • 通过镜像ID保存

    • 方式一:

docker save image_id > image-save.tar

例如:

root@Ubuntu:/usr/local/docker/nginx# docker imagesREPOSITORY      TAG                 IMAGE ID       CREATED         SIZEopenjdk         8-jre               26ac3f63d29f   2 months ago    273MBnginx           1.21.3              87a94228f133   4 months ago    133MBroot@Ubuntu:/usr/local/docker/nginx# docker save 87a94228f133 > nginx-save.tar
    • 方式二:

docker save -o image-save.tar image_id

例如:

root@Ubuntu:/usr/local/docker/nginx# docker imagesREPOSITORY      TAG                 IMAGE ID       CREATED         SIZEopenjdk         8-jre               26ac3f63d29f   2 months ago    273MBnginx           1.21.3              87a94228f133   4 months ago    133MBroot@Ubuntu:/usr/local/docker/nginx# docker save -o nginx-save.tar 87a94228f133
  • 通过镜像repository和tag保存

docker save -o image-save.tar repository:tag

例如:

root@Ubuntu:/usr/local/docker/nginx# docker imagesREPOSITORY      TAG                 IMAGE ID       CREATED         SIZEopenjdk         8-jre               26ac3f63d29f   2 months ago    273MBnginx           1.21.3              87a94228f133   4 months ago    133MBroot@Ubuntu:/usr/local/docker/nginx# docker save -o nginx-save.tar nginx:1.21.3

1.1.2 镜像的导入

  • 方式一:

docker load < nginx-save.tar
  • 方式二:

docker load -i nginx-save.tar
  • 注意

    • 使用 image_id作为参数的方式导出的镜像包进行导入会出现 none的情况,需要手动打标签

docker tag 87a94228f133 nginx:1.21.3
    • 使用镜像 repository:tag 作为导出参数的方式则正常

1.2 容器的导入和导出

1.2.1 容器的导出

容器的导出是将当前容器变成一个容器包

root@Ubuntu:/usr/local/docker/nginx# docker ps -aCONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS       PORTS                                        NAMES66b23477cdc6   nginx:1.21.3  "/docker-entrypoint.…"   7 days ago   Up 3 hours   80/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp    nginx_51tjroot@Ubuntu:/usr/local/docker/nginx# docker export -o nginx-export.tar 66b23477cdc6

1.2.2 容器包的导入

docker import nginx-export.tar nginx:1.21.3-new

export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。 

你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。 

快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。

注意:

  • docker save 保存的是镜像(image),docker export 保存的是容器(container);

  • docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;

  • docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。

d96e5675208cd406058e72938b92e8d4.png

Docker 常用命令

查看 Docker 版本

docker version

从 Docker 文件构建 Docker 映像

docker build -t image-name docker-file-location

运行 Docker 映像

docker run -d image-name

查看可用的 Docker 映像

docker images

查看最近的运行容器

docker ps -l

查看所有正在运行的容器

docker ps -a

停止运行容器

docker stop container_id

删除一个镜像

docker rmi image-name

删除所有镜像

docker rmi $(docker images -q)

强制删除所有镜像

docker rmi -r $(docker images -q)

删除所有虚悬镜像‍

docker rmi $(docker images -q -f dangling=true)


docker image prune

删除所有容器

docker rm $(docker ps -a -q)

进入 Docker 容器

docker exec -it container-id /bin/bash

查看所有数据卷

docker volume ls

删除指定数据卷

docker volume rm [volume_name]

删除所有未关联的数据卷

docker volume rm $(docker volume ls -qf dangling=true)

从主机复制文件到容器

sudo docker cp host_path containerID:container_path

从容器复制文件到主机

sudo docker cp containerID:container_path host_path

读到这里,想必你已经对 Docker 容器和镜像的常用操作以及命令有了更加深入的理解。

eb350bd9dc36e5515085f31f8afdcd72.gif

往期推荐

40 张图 详解 Docker 容器监控

剖析 kubernetes 集群内部 DNS 解析原理

Kubernetes 在科技革命中的演变

实战 Kubectl 创建 Deployment 部署应用

97f8dc54480757f59b3dce4a5a837516.gif

点分享

57e85358ca7413d3c09ee0b7c4c44d88.gif

点收藏

3fc8cce197456e343dd455c8202b128b.gif

点点赞

bf4cd12e7040a520c99e80acfbb99759.gif

点在看

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
导出Docker镜像,可以使用以下两种方法: 1. 使用docker export命令:使用容器的ID将镜像导出为一个文件。可以使用以下命令镜像导出为一个文件hangger_server.tar: ```docker export f299f501774c > hangger_server.tar``` 2. 使用docker save命令:使用镜像的名称或ID将镜像保存为一个tar文件。可以使用以下命令镜像保存为一个tar文件hangger_server.tar: ```docker save -o hangger_server.tar new_hangger_server``` 要导入Docker镜像,可以使用以下两种方法: 1. 使用docker import命令:使用之前导出镜像文件来导入镜像。可以使用以下命令将之前导出镜像文件hangger_server.tar导入为一个新的镜像new_hangger_server: ```docker import hangger_server.tar new_hangger_server``` 2. 使用docker load命令:使用之前保存的tar文件来加载镜像Docker。可以使用以下命令将之前保存的tar文件hangger_server.tar加载为一个镜像: ```docker load -i hangger_server.tar```<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Docker镜像导入导出](https://blog.csdn.net/Bejpse/article/details/126327690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值