Docker离线下载和导入镜像
以msd_lite的arm64平台latest版本为例
点击Tags--latest--linux/arm64
可以看到
DIGEST:sha256:a38d424ee77229fc9efc03a7e64726529560f6358dc1527da544a52080ed2fd3
任意Linux平台下载次镜像(相同平台需要带DIGEST,和正常拉取镜像命令完全一样)
XML/HTML代码
- docker pull tinyserve/msd_lite:latest@sha256:a38d424ee77229fc9efc03a7e64726529560f6358dc1527da544a52080ed2fd3
XML/HTML代码
- docker images
XML/HTML代码
- docker save tinyserve/msd_lite > /root/msd_lite.tar tinyserve/msd_lite:latest
或者直接scp传输到本地服务器
XML/HTML代码
- scp msd_lite.tar root@本地服务器IP:/root/msd_lite.tar
XML/HTML代码
- scp root@远程服务器:/root/msd_lite.tar msd_lite.tar
XML/HTML代码
- docker load -i msd_lite.tar
注意不同平台的导入后会丢失镜像的tag需要用命令修改
XML/HTML代码
- docker tag [IMAGE ID] tinyserve/msd_lite:latest
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代码
- docker ps
XML/HTML代码
- docker export [CONTAINER ID] > /root/msd_lite.tar
XML/HTML代码
- docker import msd_lite.tar tinyserve/msd_lite:latest
openwrt之类编译出来的tar.gz的压缩包导入
docker import xxx.tar.gz imagename:tag
XML/HTML代码
- docker import openwrt-x86-64-generic-rootfs.tar.gz openwrt:v1
git切换版本构建不同版本的lnmp
XML/HTML代码
- #拉取代码
- git clone https://github.com/fbraz3/lemp-docker.git
- #进入代码目录
- cd lemp-docker
- #查看远程分支
- git branch -a
XML/HTML代码
- * master
- remotes/origin/HEAD -> origin/master
- remotes/origin/PHP-5.6
- remotes/origin/PHP-7.0
- remotes/origin/PHP-7.1
- remotes/origin/PHP-7.2
- remotes/origin/PHP-7.3
- remotes/origin/PHP-7.4
- remotes/origin/master
- remotes/origin/tmp-branch
XML/HTML代码
- # 查看本地分支
- git branch
- * master
- #切换切换到PHP-5.6分支
- git checkout -b origin/PHP-5.6 remotes/origin/PHP-5.6
- #使用当前目录的 Dockerfile 创建镜像,标签为 lnmp:php56
- docker build -t lnmp:php56 .
- #启动docker
- docker run -dit --privileged -p 80:80 -p 3306:3306 -v /opt/lnmp/www:/app/public/ --restart=always --name=lnmp lnmp:php56