手动下载镜像

1、首先pull镜像到本地

docker pull <镜像名称>:<标签>

2、转储镜像

docker save -o /path/to/save/image.tar <镜像地址>

如:

docker save -o ./tomcat.tar localhost:5000/tomcat:9.0.80

3、解压

tar -xvf /path/to/save/image.tar 

补充

1、如果要将tar还原成镜像

docker load -i /path/to/save/image.tar

或者用输入重定向

docker load < /path/to/save/image.tar

通过容器创建镜像的3种方式

1、使用docker commit创建镜像

  • 查看容器ID
docker ps -a
  • 选择一个具体的运行过的容器,执行docker commit,并且指定镜像标签与版本
docker commit -m "this is comment " 8eddf9a796fc my_activemq:latest

2、使用docker exportdocker import创建镜像

  • 查看容器ID
docker ps -a
  • 导出容器到文件
docker export <CONTAINER ID> > img.tar
  • 加载保存的容器创建镜像
docker import img.tar <ImageName>:[Tag]

3、使用docker savedocker load导出容器tar创建镜像

  • 导出tar
docker save -o /path/to/save/image.tar 
  • 加载tar
docker load < /path/to/save/image.tar

当然,除了上面3种方式,我们还可以通过docker build 命令根据 Dockerfile 创建镜像。
示例:使用docker commit构建镜像:
执行命令:docker commit -m "this is comment " 8eddf9a796fc my_activemq:latest
查看镜像:
在这里插入图片描述
查看镜像构建历史:
在这里插入图片描述
附:dockfile详解,参考这篇大神的文章,很详细。

假如是在某个pod中下载的,那我们可以使用kubectl cp 命令拷贝到我们本地

1.将pod里的文件拷贝到主机

kubectl cp -n <namespace> -c <container_name> <pod_name>:<文件绝对路径> <文件目标位置>
注:
1.文件绝对路径前面/的要去掉
2.文件目标位置不能为文件夹,必须为文件路径

例:将pod里 /data/test.sql 拷贝到主机当前路径下,并命名为test.sql

kubectl cp -n zeus -c mysql zeus-mysql-back-0:data/test.sql ./test.sql

2.将主机文件拷贝到pod

kubectl cp <主机文件路径> -n <namespace> -c <container_name> <pod_name>:<容器内绝对路径>
注:
1.主机文件路径可以为相对路径,也可以为绝对路径。
2.pod内绝对路径前面不能有 /

例:将主机当前路径下的test.sql文件拷贝到pod的data目录下,并命名为testnew.sql

kubectl cp ./test.sql -n zeus -c mysql zeus-mysql-back-1:data/testnew.sql
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐