记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

Docker离线下载和导入镜像

Docker离线下载和导入镜像

msd_lite的arm64平台latest版本为例
点击Tags--latest--linux/arm64
可以看到
DIGEST:sha256:a38d424ee77229fc9efc03a7e64726529560f6358dc1527da544a52080ed2fd3
任意Linux平台下载次镜像(相同平台需要带DIGEST,和正常拉取镜像命令完全一样)
XML/HTML代码
  1. docker pull tinyserve/msd_lite:latest@sha256:a38d424ee77229fc9efc03a7e64726529560f6358dc1527da544a52080ed2fd3
查看下载镜像
XML/HTML代码
  1. docker images
导出压缩包
XML/HTML代码
  1. docker save tinyserve/msd_lite > /root/msd_lite.tar tinyserve/msd_lite:latest
直接下载msd_lite.tar到本地然后上传到本地docker服务器
或者直接scp传输到本地服务器
XML/HTML代码
  1. scp msd_lite.tar root@本地服务器IP:/root/msd_lite.tar
如果本地内网无法直接连接可以本地服务器下载远程服务器镜像并导入
XML/HTML代码
  1. scp root@远程服务器:/root/msd_lite.tar msd_lite.tar
导入镜像到Docker
XML/HTML代码
  1. docker load -i msd_lite.tar
注意不同平台的导入后会丢失镜像的tag需要用命令修改
XML/HTML代码
  1. docker tag  [IMAGE ID]  tinyserve/msd_lite:latest
相同平台的下载不需要带DIGEST,可以直接默认拉取,导入时候不会丢失tag。
 
docker load与docker import
首先,想要清楚的了解docker load与docker import命令的区别,就必须了解镜像与容器的区别:
镜像:用来启动容器的只读模板,是容器启动所需的rootfs,类似于虚拟机所使用的镜像。
容器:Docker 容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
镜像是容器的基础,可以简单的理解为镜像是我们启动虚拟机时需要的镜像,容器时虚拟机成功启动后,运行的服务。
想要了解docker load与docker import命令的区别,还必须知道docker save与docker export命令:
docker save images_name:将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。
docker export container_id:将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。
 
Docker导入镜像(只能导出已经正常运行的容器)
查看容器ID
XML/HTML代码
  1. docker ps
导出指定容器ID
XML/HTML代码
  1. docker export [CONTAINER ID] > /root/msd_lite.tar
导入备份的容器
XML/HTML代码
  1. docker import  msd_lite.tar  tinyserve/msd_lite:latest
openwrt之类编译出来的tar.gz的压缩包导入
docker import xxx.tar.gz  imagename:tag
XML/HTML代码
  1. docker import  openwrt-x86-64-generic-rootfs.tar.gz openwrt:v1
git切换版本构建不同版本的lnmp
XML/HTML代码
  1. #拉取代码
  2. git clone https://github.com/fbraz3/lemp-docker.git
  3. #进入代码目录
  4. cd lemp-docker
  5. #查看远程分支  
  6. git branch -a  
提示如下:
XML/HTML代码
  1. * master
  2.   remotes/origin/HEAD -> origin/master
  3.   remotes/origin/PHP-5.6
  4.   remotes/origin/PHP-7.0
  5.   remotes/origin/PHP-7.1
  6.   remotes/origin/PHP-7.2
  7.   remotes/origin/PHP-7.3
  8.   remotes/origin/PHP-7.4
  9.   remotes/origin/master
  10.   remotes/origin/tmp-branch
可以看到,我们现在在master分支下
XML/HTML代码
  1. # 查看本地分支
  2. git branch
  3. * master
  4. #切换切换到PHP-5.6分支
  5. git checkout -b origin/PHP-5.6  remotes/origin/PHP-5.6
  6. #使用当前目录的 Dockerfile 创建镜像,标签为 lnmp:php56
  7. docker build -t lnmp:php56 .
  8. #启动docker
  9. docker run -dit --privileged -p 80:80 -p 3306:3306 -v /opt/lnmp/www:/app/public/  --restart=always --name=lnmp lnmp:php56
以上命令可以切换不同的git版本实现不同lnmp的容器构建。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):