Docker 容器中镜像导出/导入
创建一个简单的Docker镜像利用docker ps -a
命令查看要导出的镜像。
docker save
这表示它处理的是镜像,通常用于在不同的 Docker 主机之间迁移 Docker image,离线环境下安装 Docker imagedocker export
主要处理的是容器本身,通常用于快速备份或转移某个容器,或在需要将容器升级到新的版本之前,对其进行测试。
【容器】镜像导出/导入
导出
查看要导出的镜像
[root@localhost ~]# docker ps -a
docker export命令进行镜像导出。
[root@localhost ~]# docker export 418ae > nginx-docker.tar
导入
带标签
利用 cat image.tar|docker import – image_name:tag 命令进行导入
# 导入时,带上标签 ---- 名称和标签尽量和原镜像保持一致
[vipsoft@kafka1host docker]$ cat nginx-docker.tar | docker import - nginx:1.20.1
不带标签,后期修改
[vipsoft@kafka1host docker]# ll
total 132428
-rw-r--r--. 1 vipsoft root 135605760 Aug 19 15:38 nginx-docker.tar
# docker import 导入,没有镜像名称和标签的
[vipsoft@kafka1host docker]# docker import nginx-docker.tar
sha256:be2f0bed014f5eaf8227e9849f03614944f85f2ac25e7ad261b39bef2799a03a
[vipsoft@kafka1host docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
be2f0bed014f 5 minutes ago 131MB
nacos/nacos-server v2.1.1 5ef6d98bd956 2 years ago 1.06GB
java 8 d23bdf5b1b1b 7 years ago 643MB
# 使用 docker tag命令进行修改 ":" 前代表镜像名称,":"后代表镜像标签
[vipsoft@kafka1host docker]# docker tag be2f0bed nginx:1.21.1
[vipsoft@kafka1host docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.21.1 be2f0bed014f 7 minutes ago 131MB
nacos/nacos-server v2.1.1 5ef6d98bd956 2 years ago 1.06GB
java 8 d23bdf5b1b1b 7 years ago 643MB
利用docker import命令导入的镜像,镜像在仓中是没有镜像名称和标签的,可以使用docker tag命令进行修改。
【仓库】镜像导出/导入
导出
docker save -o nginx-vipsoft-docker.tar nginx:1.20.1
# nginx-docker.tar:代表导出镜像后的压缩名字,可以任意命名。
# -o:指定输出文件名,可以任意命名。
# nginx:1.20.1 :代表仓库中要导出的镜像名称。按仓库中实际名字为主。
导入
# docker load -i 镜像保存文件位置
docker load -i /home/vipsoft/docker/nginx-vipsoft-docker.tar
注:如果在某一个容器里安装了某些命令或配置,导出镜像时,一定要先把容器提交到镜像,否则导出的镜像再次导入新的docker中,你安装命令或配置会丢失。
如下所示,我在某一个容器里安装了查看网络的命令,但没有提交容器到镜像,导出后再次导入到其它docker环境后,执行ifconfig时报命令换不到:
docker commit 418ae48f5db8 nginx:1.20.1
导入(完整命令)
[root@localhost ~]# docker images | grep nginx
nginx 1.20.1 c8d03f6b8b91 2 years ago 133MB
registry.baidubce.com/netrainpublic/nginx latest 90c072ff69fd 4 years ago 287MB
[root@localhost ~]# docker ps -a | grep nginx
418ae48f5db8 nginx:1.20.1 "/docker-entrypoint.…" 18 hours ago Up 18 hours 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
[root@localhost ~]# docker exec -it 418ae /bin/bash
root@418ae48f5db8:/# vi /usr/share/nginx/html/index.html
bash: vi: command not found
root@418ae48f5db8:/# exit
exit
# 容器中没有 vi 命令,将 index.html 复制到宿主机中进行修改
[root@localhost ~]# docker cp 418ae48:/usr/share/nginx/html/index.html /opt/index.html
[root@localhost ~]# vi /opt/index.html
# 将改好的文件 复制到容器中
[root@localhost ~]# docker cp /opt/index.html 418ae48:/usr/share/nginx/html/index.html
# 进入容器,查看是否被修改
[root@localhost ~]# docker exec -it 418ae /bin/bash
root@418ae48f5db8:/# cat /usr/share/nginx/html/index.html
Welcome to nginx!
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
VipSoft 2024.08.20 #增加的内容
root@418ae48f5db8:/# exit
[root@localhost ~]# docker images | grep nginx
nginx 1.20.1 c8d03f6b8b91 2 years ago 133MB
registry.baidubce.com/netrainpublic/nginx latest 90c072ff69fd 4 years ago 287MB
[root@localhost ~]# docker ps -a | grep nginx
418ae48f5db8 nginx:1.20.1 "/docker-entrypoint.…" 18 hours ago Up 18 hours 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
# 将容器修改后的内容,提交到镜像
[root@localhost ~]# docker commit 418ae nginx:1.20.1
sha256:b532c001cdda870c5cf3c689d720b39571f160071671758ae899aed2870b8517 #生成新的镜像 b532...
[root@localhost ~]# docker images | grep nginx
nginx 1.20.1 b532c001cdda 7 seconds ago 133MB #生成新的镜像 b532...
nginx c8d03f6b8b91 2 years ago 133MB
registry.baidubce.com/netrainpublic/nginx latest 90c072ff69fd 4 years ago 287MB
# 保存镜像
[root@localhost ~]# docker save -o nginx-vipsoft-docker.tar nginx:1.20.1
[root@localhost ~]# ll | grep nginx
-rw-------. 1 root root 137402368 8月 20 09:38 nginx-vipsoft-docker.tar
[root@localhost ~]#
目标机
[vipsoft@kafka1host docker]# docker images | grep nginx
# 加载保存的镜像
[vipsoft@kafka1host docker]# docker load -i /home/vipsoft/docker/nginx-vipsoft-docker.tar
e81bff2725db: Loading layer [==================================================>] 72.52MB/72.52MB
6662554e871b: Loading layer [==================================================>] 64.8MB/64.8MB
4edd8832c8e8: Loading layer [==================================================>] 3.072kB/3.072kB
0dcd28129664: Loading layer [==================================================>] 4.096kB/4.096kB
8ffde58510c5: Loading layer [==================================================>] 3.584kB/3.584kB
91117a05975b: Loading layer [==================================================>] 7.168kB/7.168kB
dd6582995144: Loading layer [==================================================>] 19.97kB/19.97kB
Loaded image: nginx:1.20.1
[vipsoft@kafka1host docker]# docker images | grep nginx
nginx 1.20.1 b532c001cdda 22 minutes ago 133MB
# 运行 Nginx 镜像
[vipsoft@kafka1host docker]# docker run -d -p 80:80 --name nginx nginx:1.20.1
3d7e05768d372f8753882505313563be23fd594ad6bb2778fd49ff9cf47cecdb
[vipsoft@kafka1host docker]# docker ps -a | grep nginx
3d7e05768d37 nginx:1.20.1 "/docker-entrypoint.…" 10 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
# 查看日志
[vipsoft@kafka1host docker]# docker logs --tail=100 -f nginx
文章转载自:VipSoft
原文链接:https://www.cnblogs.com/vipsoft/p/18367351
体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构