Docker基础(3)docker导入导出镜像和其他相关操作

本文介绍了Docker镜像的管理命令,包括如何使用`docker image rm`删除镜像,使用`docker images save`和`docker image load`导出与导入镜像。此外,还展示了如何在删除镜像前停止并移除相关容器,以及通过`docker pull`下载镜像。这些命令帮助用户更有效地管理Docker镜像。

1.Docker镜像常用命令

1.1 帮助

docker --help
查询Docker client命令的介绍,这里着重看Docker的Managerment Commands

Management Commands:
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  volume      Manage volumes

在之前的Docker版本中是没有这些管理命令的,后台版本升级Docker通过管理命令将Docker client命令进行分类,建议读者们使用这些命令进行操作。例如,我不了解image的操纵,可执行docker image --help查看,这样就能获取所需要的命令了

1.2 删除镜像

docker image rm
在该镜像被使用,也就是有创建的容器的时候,需要先停止容器
docker container stop 容器name or 容器 id
然后删除容器
docker container rm 容器name or 容器id
然后再执行删除。

快捷清除容器

[root@wangle-master ~]# docker container stop $(docker ps -a|awk '{print $1}') && docker container rm $(docker ps -a|awk '{print $1}') 

1.3 导出镜像导入镜像

docker image save nginx > wangle-nginx.tar
docker image load 镜像名 < xxx.tar

这里的导出镜像一般很少使用,基本存在虚拟机不能联网的时候希望分享镜像,现在几乎是将镜像push到远程仓库中供给自己或者其他人使用。

1.3.1 首先下载镜像,这里下载ngin镜像

[root@wangle-master ~]# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ... 
latest: Pulling from docker.io/library/nginx
e1acddbe380c: Pull complete 
e21006f71c6f: Pull complete 
f3341cc17e58: Pull complete 
2a53fa598ee2: Pull complete 
12455f71a9b5: Pull complete 
b86f2ba62d17: Pull complete 
Digest: sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef
Status: Downloaded newer image for docker.io/nginx:latest

1.3.2 导出镜像

这里我们导出wangle-ubuntu.tar,一般导出tar包

[root@wangle-master ~]# docker image save nginx > wangle-nginx.tar
[root@wangle-master ~]# ls
34.197.211.151:443:  logs  metersphere-release-v1.10.4         nacos             wangle-ubuntu.tar
kubeadm-config.yaml  luo   metersphere-release-v1.10.4.tar.gz  wangle-nginx.tar
[root@wangle-master ~]# 

1.3.3 删除镜像

[root@wangle-master ~]# docker image rm nginx
Untagged: nginx:latest
Untagged: docker.io/nginx@sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef
Deleted: sha256:dd34e67e3371dc2d1328790c3157ee42dfcae74afffd86b297459ed87a98c0fb
Deleted: sha256:ec6149850eea7af0bfa5f4aa0130d2c3cbae06e4b5da8c748d8b6b1b0cb81d07
Deleted: sha256:2a3d94c7adfe6e94ef038a9b3ea3631168e979f8ddb49a38b203e364627af2d9
Deleted: sha256:2bbff8011bb867605e83fdb8095f94a347307726b8cce81d752886a8af974aea
Deleted: sha256:f151353bef203bd70680578f33abd9667b65434ffadf547f900dca09927cc435
Deleted: sha256:47c01ba78b6d0bdef530c46858d4c83b87452d42dc9faa54b02b3e026107ff27
Deleted: sha256:f68ef921efae588b3dd5cc466a1ca9c94c24785f1fa9420bea15ecc2dedbe781

执行docker image ls就会发现nginx已经被删除了

1.3.4 导入镜像

[root@wangle-master ~]# docker image load < wangle-nginx.tar
f68ef921efae: Loading layer [==================================================>] 72.53 MB/72.53 MB
d1279c519351: Loading layer [==================================================>] 64.86 MB/64.86 MB
678bbd796838: Loading layer [==================================================>] 3.072 kB/3.072 kB
009f1d338b57: Loading layer [==================================================>] 4.096 kB/4.096 kB
8f736d52032f: Loading layer [==================================================>] 3.584 kB/3.584 kB
fb04ab8effa8: Loading layer [==================================================>] 7.168 kB/7.168 kB
Loaded image: docker.io/nginx:latest
Loaded image ID: sha256:dd34e67e3371dc2d1328790c3157ee42dfcae74afffd86b297459ed87a98c0fb
Loaded image ID: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f
### 导出 Docker 容器镜像为 tar 文件 在某些情况下,例如目标服务器无法直接访问互联网,可以通过将容器镜像导出为 tar 文件的方式进行迁移。该方法适用于在不同环境中复制相同镜像的场景。 使用 `docker save` 命令可以将指定的 Docker 镜像导出为 tar 文件。例如,将名为 `ubuntu:latest` 的镜像导出到当前目录下的 `uu.tar` 文件中: ```bash docker save ubuntu:latest > uu.tar ``` 该命令会将镜像的完整文件系统元数据打包为 tar 文件,确保在目标环境中可以完整还原镜像状态[^2]。 ### 将 tar 文件导入到目标服务器 在目标服务器上,使用 `docker load` 命令将 tar 文件导入为本地镜像。假设 tar 文件已通过 `scp` 或其他方式传输至目标服务器的 `/data/` 目录下,可执行以下命令进行加载: ```bash docker load -i /data/uu.tar ``` 此操作完成后,目标服务器将拥有与源服务器相同的镜像内容,并可基于该镜像运行容器[^1]。 ### 基于导入镜像运行容器 导入镜像后,可以通过 `docker run` 命令基于该镜像启动新的容器。例如,启动一个交互式终端并运行 `bash`: ```bash docker run -it ubuntu:latest bash ``` 此命令会基于导入镜像创建并运行一个新容器,用户可以立即开始使用该容器进行开发、测试或部署操作[^5]。 ### 容器与镜像导出的区别 需要注意的是,`docker save` `docker export` 是两个不同的命令,分别用于导出镜像容器。`docker save` 用于导出完整的镜像,包括镜像的层级结构元数据,而 `docker export` 用于导出容器的文件系统快照,不保留镜像的构建历史元数据。例如,导出一个容器的文件系统可以使用以下命令: ```bash docker export <容器ID或名称> > export_image.tar ``` 在目标服务器上导入容器快照时,需使用 `docker import` 命令: ```bash cat export_image.tar | docker import - test_image:latest ``` 此方法适用于仅需迁移容器的文件系统内容,而不关心其构建历史的场景[^3]。 ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王乐乐君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值