一:介绍
1.1 容器的概念
统称来说,容器是一种工具,是可以装下其它物品的工具,以方便人类归纳放置物品、存储和异地运输;比如,人类使用的衣柜,行李箱,背包等都可以称之为容器。
1.2 docker容器虚拟化的好处
在云时代,开发者创建的应用必须要能很方便的在网络上传播,也就是说应用必须脱离底层物理硬件的限制;同时必须满足“任何时间任何地点” 可获取使用的地点,因此,开发者们需要一种新型的创建分布式应用程序的方式,快速分发部署,而这正是docker所能够提供的最大优势,docker提供了一种更为聪明的方式,通过容易来打包应用、解耦应用和运行平台,这意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类别的平台,这无疑帮助我们节约了大量的宝贵时间,并降低部署过程出现问题的风险。
1.3 docker在开发运维种的优势
对于开发和运维人员来说,最梦寐以求的效果可能就是一次创建和配置,之后可以在任何地方、任何时间让应用正常运行,而docker恰恰可以实现这一终极目标,具体来说,在开发和运维的过程中,docker具有以下几个方面的优势:
1、更快的交付和部署:使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完之后,测试和运维人员可以直接使用完全相同的环境来部署代码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭代,节约开发、测试及部署的时间。
2、更高效的利用资源:运行docker容器不需要额外的虚拟化管理程序的支持,docker是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低,与传统的虚拟机方式相比,docker的性能要提高1~2个数量级。
3、更轻松的管理和更新:使用dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。
1.4 docker与虚拟机的比较
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机的方式相比具有如下显著优势:
1、Docker容器启动很快,启动和停止可以实现秒级,相比传统的虚拟机方式(分钟级)要快速很多。
2、Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
3、Docker通过类似git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。
4、Docker通过Dockerfile支持灵活的自动化创建和部署机制,可以提高工作效率,并标准化流程。
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较好 |
内存 | MB级 | GB级 |
硬盘适应 | MB级 | GB级 |
运行密度 | 单台主机支持上千个 | 单台主机支持几个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移 | 优秀 | 一般 |
1.5 docker与虚拟化
Docker以及其他容器技术,都属于操作系统虚拟化范畴,操作系统细腻化最大的特点就是不需要额外的supervisor支持。Docker虚拟化方式之所以有众多优势,跟操作系统虚拟化技术自身的设计和实现分不开。
传统方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。Docker容器时在操作系统层面实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。
1.6 docker概念和使用
Docker中有三个核心概念:镜像、容器和仓库。因此,准确把握这三大概念对于掌握Docker技术尤为重要。
1.镜像(Image)
Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
2.容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
3.仓库(Repository)
用来保存镜像的仓库。当我们构建好自己的镜像之后,需要存放在仓库中,当我们需要启动一个镜像时,可 以在仓库中下载下来。
二:安装
2.1 Ubuntu 14.04/16.04(使用 apt-get 进行安装)
Docker目前支持最低Ubuntu版本为14.04LTS, 但实际上从稳定性上考虑, 推荐使用16.04LTS 或18.04LTS版本, 并且系统内核越新越好, 以支持 Docker 最新的特性。(uname -a查看)
# step 1: 更新系统并安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:
1: 查找Docker-CE的版本:
apt-cache madison docker-ce
docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
sudo apt-get -y install docker-ce=[VERSION]
2.2 CentOS 7(使用 yum 进行安装)
更换系统yum源
# 1.查看系统内核版本
[root@docker ~]# uname -a Linux docker 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
# 2.备份原来yum源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 3.更换base源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 4.刷新yum源缓存
yum makecache
下载docker-ce
#1: 安装必要的一些系统工具(若之前安装果docker,需要先删掉,再安装依赖)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#3:修改
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
#4: 更新索引文件并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
#5: 开启Docker服务
systemctl start docker.service
#6:设置开机自启
[root@docker yum.repos.d]# systemctl enable docker.service
#7.安装校验
[root@docker yum.repos.d]# docker version
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:58:10 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:56:35 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.8
GitCommit: 7eba5930496d9bbe375fdf71603e610ad737d2b2
runc:
Version: 1.0.0
GitCommit: v1.0.0-0-g84113ee
docker-init:
Version: 0.19.0
GitCommit: de40ad0
------------------------------------------------
#注意:
官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
vim /etc/yum.repos.d/docker-ce.repo
将[docker-ce-test]下方的enabled=0修改为enabled=1
#安装指定版本的Docker-CE:
1: 查找Docker-CE的版本:
yum list docker-ce.x86_64 --showduplicates | sort -r
Loading mirror speeds from cached hostfile
Loaded plugins: branch, fastestmirror, langpacks
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
Available Packages
2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
sudo yum -y install docker-ce-[VERSION]
2.3 验证
#简单下载一个nginx,在浏览器访问ip,出现nginx页面代表安装docker和nginx成功
[root@docker ~]# docker run -d -p 80:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
33847f680f63: Pull complete
dbb907d5159d: Pull complete
8a268f30c42a: Pull complete
b10cf527a02d: Pull complete
c90b090c213b: Pull complete
1f41b2f2bf94: Pull complete
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
Status: Downloaded newer image for nginx:latest
151baf71677de1e8a6445c335fd10a3c80d96a538f9e04b6d1dc8f74c43e6679
三:镜像加速器
3.1 下载添加
点击:阿里云-》容器镜像服务acr-》管理控制台-》镜像工具-》镜像加速器-》操作文档选择版本-》复制配置镜像加速器内容到虚拟机
验证下载:
[root@docker ~]# docker info
Registry Mirrors: #出现此信息即可,默认的镜像仓库地址
https://e0cb1jsj.mirror.aliyuncs.com/
四:镜像使用
镜像主要包括一些镜像文件、镜像tag以及镜像详细信息等等。
4.1 获取镜像
完整格式:docker pull [仓库URL]/[仓库命名空间]/[仓库名称]:[版本号]
例:
docker pull mysql:5.7
默认的仓库URL:index.docker.io
默认的命名空间:library
index.docker.io/library/mysql:5.7
4.2 查看镜像
#使用docker images 或 docker images ls命令可以列举本地主机上已有镜像的基本信息(列表)。
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 08b152afcfae 4 days ago 133MB
mysql 5.7 8cf625070931 4 days ago 448MB
REPOSITORY:镜像名称
TAG : 版本号、版本号(默认最新版本号为:latest)
IMAGE ID :镜像ID
CREATED :创建距离现在的时间段
SIZE : 镜像大小
#注意:
其中镜像的ID信息十分重要,它唯一标识了镜像。在使用镜像ID的时候,一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID。
TAG信息用于标记来自同一个仓库的不同镜像。TAG在同一个仓库中是唯一的。
镜像大小信息只是表示了该镜像的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像逻辑体积之和。
image子命令参数
docker images -a #列出所有(包括临时文件)镜像文件
docker images -q #仅显示ID信息
docker images --digests #列出镜像的数字摘要值
4.3 为镜像添加tag标签
为了方便后续工作中使用特定的镜像,还可以使用docker tag命令来为本地的镜像添加标签。
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 08b152afcfae 4 days ago 133MB
mysql 5.7 8cf625070931 4 days ago 448MB
[root@docker ~]# docker tag nginx:latest nginx2:latest
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx2 latest 08b152afcfae 4 days ago 133MB
nginx latest 08b152afcfae 4 days ago 133MB
mysql 5.7 8cf625070931 4 days ago 448MB
4.4 获取镜像的详细信息
包括PID、作者、架构等等。
[root@docker ~]# docker inspect nginx
4.5 查看镜像的历史
[root@docker ~]# docker history nginx
4.6 搜索镜像
在docker中搜索镜像主要使用Search子命令,默认只搜索Docker Hub官方镜像仓库中的镜像。
语法:
docker search 选项 条件
参数
-f : 过滤输出内容
# 搜索官方提供的带有Redis关键字的镜像
[root@alvin-test-os ~]# docker search -f is-official=true redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 8779 [OK]
# 搜索被收藏超过8000个的并且关键词包括Redis的镜像
[root@alvin-test-os ~]# docker search -f stars=8000 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 8779 [OK]
--limit: 限制输出结果
[root@alvin-test-os ~]# docker search -f stars=8 --limit 3 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 8779 [OK]
bitnami/redis Bitnami Redis Docker Image 167 [OK]
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 47 [OK]
--no-trunc: 不截断输出结果
[root@alvin-test-os ~]# docker search -f stars=8 --limit 3 --no-trunc redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that functions as a data structure server. 8779 [OK]
bitnami/redis Bitnami Redis Docker Image 167 [OK]
rediscommander/redis-commander Alpine image for redis-commander - Redis management tool. 47 [OK]
注释
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
4.7 删除镜像
使用docker rmi 或docker image rm命令可以删除镜像
命令格式为
docker rmi image
例:
[root@docker ~]# docker rmi nginx
参数:
-f : 强制删除镜像。
注:
需要删除的镜像必须没有任何容器正在使用,强制删除只能删除镜像名字
4.8 清理镜像
使用一段时间之后,docker会产生很多临时文件,以及一些没有被使用的镜像, 我们可以通过 docker image prune 命令来进行清理。
参数:
docker image prune -a :删除所有的未被使用的镜像,包括临时镜像。
docker image prune -f :强制删除镜像,而不进行提示
4.9 构建镜像
构建镜像一般有三种情况,基于容器导入、基于本地模板导入、基于Dockerfile创建,本章主讲基于容器保存镜像和本地保存镜像导入。
基于容器保存(手动)
语法:docker 容器id commit
参数:
-a 作者信息
-m 提交信息
-p 提交时,暂停容器运行
-c 使用Dockerfile指令来创建镜像
例:
基于centos7系统的nginx镜像(单服务)
1、启动一个容器并进入
[root@docker ~]# docker run -it -p 80:80 centos:7
2、在容器中建立下载地址
[root@837b52e2f844 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@837b52e2f844 /]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3、下载nginx
[root@837b52e2f844 /]# yum install nginx -y
4、在容器中下将刚下载的nginx访问页面修改自定义的(自步骤为了后续好辨认,随意)
[root@837b52e2f844 /]# ll /usr/share/nginx/html
total 12
-rw-r--r-- 1 root root 3650 Jun 2 00:21 404.html
-rw-r--r-- 1 root root 3693 Jun 2 00:21 50x.html
lrwxrwxrwx 1 root root 20 Jul 27 02:47 en-US -> ../../doc/HTML/en-US
drwxr-xr-x 2 root root 27 Jul 27 02:47 icons
lrwxrwxrwx 1 root root 18 Jul 27 02:47 img -> ../../doc/HTML/img
lrwxrwxrwx 1 root root 25 Jul 27 02:47 index.html -> ../../doc/HTML/index.html
-rw-r--r-- 1 root root 368 Jun 2 00:21 nginx-logo.png
lrwxrwxrwx 1 root root 14 Jul 27 02:47 poweredby.png -> nginx-logo.png
[root@837b52e2f844 /]# rm -rf /usr/share/nginx/html/index.html
[root@837b52e2f844 /]# ll /usr/share/nginx/html
total 12
-rw-r--r-- 1 root root 3650 Jun 2 00:21 404.html
-rw-r--r-- 1 root root 3693 Jun 2 00:21 50x.html
lrwxrwxrwx 1 root root 20 Jul 27 02:47 en-US -> ../../doc/HTML/en-US
drwxr-xr-x 2 root root 27 Jul 27 02:47 icons
lrwxrwxrwx 1 root root 18 Jul 27 02:47 img -> ../../doc/HTML/img
-rw-r--r-- 1 root root 368 Jun 2 00:21 nginx-logo.png
lrwxrwxrwx 1 root root 14 Jul 27 02:47 poweredby.png -> nginx-logo.png
[root@837b52e2f844 /]# echo "hello world" > /usr/share/nginx/html/index.html
5、启动
[root@837b52e2f844 /]# nginx
[root@837b52e2f844 /]#
6、网页ip访问或者新开虚拟机curlip访问出现hello word即可
7、访问测试成功即可退出
[root@837b52e2f844 /]# exit
exit
7、将容器保存为镜像
[root@docker html]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
837b52e2f844 centos:7 "/bin/bash" 19 minutes ago Exited (0) 4 minutes ago loving_tereshkova
[root@docker html]# docker container commit 837b52e2f844 centos_nginx:v1
sha256:70814c4f12528ff21cd9855f3f69e638a8fc3d72eababaaaa2716d7a74273503
[root@docker html]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v1 70814c4f1252 40 seconds ago 405MB
nginx latest 08b152afcfae 4 days ago 133MB
nginx2 latest 08b152afcfae 4 days ago 133MB
mysql 5.7 8cf625070931 4 days ago 448MB
centos 7 8652b9f0cb4c 8 months ago 204MB
8、测试创建的镜像使用
[root@docker html]# docker container commit 837b52e2f844 centos_nginx:v1
sha256:70814c4f12528ff21cd9855f3f69e638a8fc3d72eababaaaa2716d7a74273503
[root@docker html]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v1 70814c4f1252 40 seconds ago 405MB
nginx latest 08b152afcfae 4 days ago 133MB
nginx2 latest 08b152afcfae 4 days ago 133MB
mysql 5.7 8cf625070931 4 days ago 448MB
centos 7 8652b9f0cb4c 8 months ago 204MB
[root@docker html]# docker run -d -p 81:80 centos_nginx:v1 nginx -g 'daemon off;'
2921c97c350af2002317241da954e044a9a9f47f8cf3897b187eec5a89457146
[root@docker html]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2921c97c350a centos_nginx:v1 "nginx -g 'daemon of…" 11 seconds ago Up 10 seconds 0.0.0.0:81->80/tcp, :::81->80/tcp interesting_nobel
837b52e2f844 centos:7 "/bin/bash" 22 minutes ago Exited (0) 7 minutes ago loving_tereshkova
[root@docker html]# docker ps -a --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2921c97c350af2002317241da954e044a9a9f47f8cf3897b187eec5a89457146 centos_nginx:v1 "nginx -g 'daemon off;'" About a minute ago Up About a minute 0.0.0.0:81->80/tcp, :::81->80/tcp interesting_nobel
837b52e2f844acbb6073678ba74f913560706623ebc899677f7ab8a9827b0539 centos:7 "/bin/bash" 24 minutes ago Exited (0) 9 minutes ago loving_tereshkova
[root@docker html]#
9、网页或者新启动一个虚拟机curlip:81端口访问出现hello word即可
4.10 保存镜像
有时我们需要将一台电脑上的镜像复制到另一台电脑上使用,除了可以借助仓库外,还可以直接将镜像保存成一个文件,再拷贝到另一台电脑上导入使用;对于镜像的导出和导入,Docker 提供了两种方案,下面分别进行介绍。
使用 export 和 import
export 和 import的针对点是容器,将本机的容器导出为镜像包。
- export保存容器为镜像包
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2921c97c350a centos_nginx:v1 "nginx -g 'daemon of…" 10 minutes ago Up 10 minutes 0.0.0.0:81->80/tcp, :::81->80/tcp interesting_nobel
837b52e2f844 centos:7 "/bin/bash" 32 minutes ago Exited (0) 17 minutes ago loving_tereshkova
[root@docker ~]# docker export 2921c97c350a > centos_nginx.tar
[root@docker ~]# ll | grep centos_nginx.tar
-rw-r--r-- 1 root root 385090560 Jul 27 11:19 centos_nginx.tar
2)import导入镜像包为镜像
[root@docker ~]# docker import centos_nginx.tar centos_nginx:v2
sha256:6c7dc47e4a206d3a5c9bf745cec968ae3494039fed8979d48db1cda81744522f
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v2 6c7dc47e4a20 5 seconds ago 377MB
<none> <none> b61fcd68f65a 56 seconds ago 377MB
centos_nginx v1 70814c4f1252 18 minutes ago 405MB
nginx2 latest 08b152afcfae 4 days ago 133MB
nginx latest 08b152afcfae 4 days ago 133MB
mysql 5.7 8cf625070931 4 days ago 448MB
centos 7 8652b9f0cb4c 8 months ago 204MB
- 测试
[root@docker ~]# docker run -d -p 82:80 centos_nginx:v2 /bin/bash /init.sh
b7d59f3066fbaa0e8411a66029ea999585442a7f4c6359c1b4a69f855bcb9517
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7d59f3066fb centos_nginx:v2 "/bin/bash /init.sh" 22 seconds ago Exited (127) 21 seconds ago gracious_noether
2921c97c350a centos_nginx:v1 "nginx -g 'daemon of…" 18 minutes ago Up 18 minutes 0.0.0.0:81->80/tcp, :::81->80/tcp interesting_nobel
837b52e2f844 centos:7 "/bin/bash" 40 minutes ago Exited (0) 25 minutes ago loving_tereshkova
使用save 和load
save 和 load 的针对的点是镜像, 将本机的镜像导入、 导出为镜像包。
- 使用save保存镜像
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v2 6c7dc47e4a20 4 minutes ago 377MB
<none> <none> b61fcd68f65a 5 minutes ago 377MB
centos_nginx v1 70814c4f1252 23 minutes ago 405MB
nginx2 latest 08b152afcfae 4 days ago 133MB
nginx latest 08b152afcfae 4 days ago 133MB
mysql 5.7 8cf625070931 4 days ago 448MB
centos 7 8652b9f0cb4c 8 months ago 204MB
[root@docker ~]# docker save 6c7dc47e4a20 > centos_nginx2.tar #保存单个
[root@docker ~]# ll |grep centos_nginx2.tar
-rw-r--r-- 1 root root 385097728 Jul 27 11:29 centos_nginx2.tar
[root@docker ~]# docker save -o test.tar mysql:5.7 centos:7 #保持多个
[root@docker ~]# ll |grep test.tar
-rw------- 1 root root 665309696 Jul 27 11:31 test.tar
2)load导入镜像
docker load 参数:
-input , -i : 指定导入的文件,代替 STDIN。
--quiet , -q : 精简输出信息。
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@docker ~]# docker load < test.tar
Loaded image: mysql:5.7
Loaded image: centos:7
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 8cf625070931 4 days ago 448MB
centos 7 8652b9f0cb4c 8 months ago 204MB
两种保持和导入镜像方式的差别
1、文件大小不同:dockers export 保存的镜像的体积小于docker save
2、保存的内容不同:docker save保持的是镜像当时的状态,而docker export是根据容器拿到镜像,保存的是保存容器当时的快照状态,再导入时会丢失镜像所有的历史记录和元数据信息,所以无法进行回滚操作。
3、自定义镜像名称:docker impprt 可以,docker load 不能对载入的镜像重命名。
4、配置启动命令:docker import未保存镜像默认的启动命令,docker load保存了
5、应用场景:docker save一般情况下,使用的场景是项目迁移(编排多个镜像组合时,客户端服务器不能连接外网),docker export一般
来源:#新猿技术生态圈