1--docker介绍、安装; docker镜像相关命令

一、docker官方介绍

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容LXC)等技术。在 LXC 的基础上 Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

1.Docker 容器虚拟化的好处

在云时代,开发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的限制;同时必须满足“任何时间任何地点”可获取可使用的特点。因此,开发者们需要一种新型的创建分布式应用程序的方式,快速分发部署,而这正是 Docker 所能够提供的最大优势。Docker 提供了一种更为聪明的方式,通过容器来打包应用、解耦应用和运行平台。这意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类别的平台。这无疑帮助我们节约了大量的宝贵时间,并降低部署过程出现问题的风险。

2.Docker 在开发和运维中的优势

对于开发和运维人员来说,最梦寐以求的效果可能就是一次创建和配置,之后可以在任意地方、任意时间让
应用正常运行,而 Docker 恰恰可以实现这一中级目标。具体来说,在开发和运维过程中,Docker 具有以下几
个方面的优势:

更快的交付和部署:使用 Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完之后,测试和运维人员可以直接使用完全相同的环境来部署代码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。Docker 可以快速创建和删除容器,实现快速迭代,节约开发、测试及部署的时间。
更高效的利用资源:运行 Docker 容器不需要额外的虚拟化管理程序的支持,Docker 是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低,与传统的虚拟机方式相比,Docker 的性能要提高 1 ~ 2 个数量级
更轻松的迁移和扩展:Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑等等,同时支持主流的操作系统发行版本。这种兼容性能让用户可以在不同的平台之间轻松的迁移应用。
更轻松的管理和更新:使用 Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。

3.Docker 与虚拟机的比较

作为一种轻量级的虚拟化方式,Docker 在运行应用上跟传统的虚拟机的方式相比具有如下显著优势:
 Docker 容器启动很快,启动和停止可以实现秒级,相比传统的虚拟机方式(分钟级)要快速很多。
 Docker 容器对系统资源需求很少,一台主机上可以同时运行数千个 Docker 容器。
 Docker 通过类似 git 设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。
 Docker 通过 Dockerfile 支持灵活的自动化创建和部署机制,可以提高工作效率,并标准化流程。

# 特性		  容器	 		虚拟机
--------------------------------------------------------
 启动速度快	    秒级	         分钟级
 性能		    接近原生	          较好
 内存		    MB级	          GB级
 硬盘适应	    MB级	          GB级
 运行密度	  单台主机支持上千个        单台主机支持几个
 隔离性	   安全隔离(进程间的隔离)	   完全隔离(系统间的隔离)
 迁移		     优秀	            一般

虚拟机技术缺点

资源占用十分多
冗余步骤多
启动很慢
容器化技术不是模拟的一个完整的操作系统

二、Docker 概念

Docker 中有三个核心概念:镜像、容器和仓库。因此,准确把握这三大概念对于掌握 Docker 技术尤为重要。

1.镜像(Image)

Docker 镜像(Image)就是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建很多容器。就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统
(镜像就是启动一个容器的模板)

2.容器(Container)

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器就是对外提供服务的进程。或者容器就是镜像启动起来的一个实例)一个进程就是一个实例

3.仓库(Repository)

集中存放镜像文件的场所。。当我们构建好自己的镜像之后,需要存放在仓库中,当我们需要启动一个镜像时,可以在仓库中下载下来。
仓库和仓库注册服务器是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库和私有仓库两种形式。
最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载
国内的公开仓库包括阿里云,网易云等
(仓库是用来存放镜像的地方)

底层原理

docker是怎么工作的?

docker是一个CS结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问!
dockerserver接收到dockerclient的指令,就会执行这个命令!

三、docker的安装和使用

windowsa安装: 其实docker是无法安装到Windows,之所以能安装,是因为Windows版的dockers内核集成虚拟机

下面我来学习用linux安装docker

1.docker安装

环境查看

# 系统内核是3.10以上的
[root@docker ~]# uname -r
3.10.0-1160.31.1.el7.x86_64

#系统版本
[root@docker ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

1).如果之前安装过docker,需要自行卸载

sudo yum remove docker docker-common docker-selinux docker-engine -y

2).初始化系统环境

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3).安装yum源

wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
或者
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4).修改源

sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

5).更新yum软件包索引

yum makecache fast

6).安装docker

yum install docker-ce-19.03.9 -y  #指定版本安装    ce是社区版   ee是企业版

7).docker优化

打开阿里云官网  产品  --> 容器与中间件  -->  容器与镜像服务ACR --> 管理控制台 --> 镜像加速器 --> CentOS
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

8).设置开机自启

systemctl enable --now docker

9).检查docker

 #第一种方式
   docker run -d -P nginx
   
 #第二种方式 *
   docker info

四、docker卸载 及镜像相关命令

1.卸载依赖

yum remove docker-ce docker-ce-cli containerd.io

2.删除目录

rm -rf /var/lib/docker   #docker默认的工作路径

3.镜像加速器(docker优化)

  • 登录阿里云找到容器镜像服务
  • 找到镜像加速地址
  • 配置使用

4.docker镜像相关命令

1.常用镜像仓库

#1.官方仓库:hub.docker.com
#2.自己的私有仓库:Harbor
#3.阿里云私有仓库:registry.cn-hangzhou.aliyuncs.com

2).探索镜像

#格式:
docker search [镜像ID|名称]
搜索镜像默认在官方镜像仓库中搜索

#实例:
[root@localhost ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11171     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4242      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   832                  [OK]

	NAME : 镜像名称
	DESCRIPTION : 镜像描述
	STARS : 收藏个数
	OFFICIAL : 是否是官方构建镜像
	AUTOMATED:是否是自构建镜像

#参数:
		--limit : 查询出几条
		-f : 指定字段
		--no-trunc :显示所有的简介

#参数案例
[root@docker ~]# docker search mysql --filter=STARS=3000   #搜索出来的镜像就是STARS大于3000的
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10637     [OK]       
mariadb   MariaDB Server is a high performing open sou…   3991      [OK]  

3).拉取镜像

#格式:
docker pull [镜像名称]
docker pull [仓库URL]/[仓库命名空间]/[仓库名称]:[版本号]   
如:docker pull mysql:5.7
	默认的URL:index.docker.io
	默认的命名空间:library
	index.docker.io/library/mysql:5.7
	
#实例:
[root@docker ~]# docker pull redis
Using default tag: latest  #如果不写tag.默认就是latest
latest: Pulling from library/redis
    #镜像层
a076a628af6f: Already exists 
f40dd07fe7be: Pull complete 
ce21c8a3dbee: Pull complete 
ee99c35818f8: Pull complete 
56b9a72e68ff: Pull complete 
3f703e7f380f: Pull complete 
    #镜像ID号(镜像ID号是全球唯一)
Digest: sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494   #签名
	#镜像下载状态
Status: Downloaded newer image for redis:latest
	#镜像的全称(镜像的tag)
docker.io/library/redis:latest

4).查看当前系统上有哪些镜像

#格式
docker images 或者 docker image ls
解释:查看当前系统中所有的镜像列表

#参数
-q : 只显示镜像ID
[root@docker ~]# docker images -q
621ceef7494a
f6d0b4767a6c

#案例:
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    08b152afcfae   3 days ago   133MB
[root@localhost ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    08b152afcfae   3 days ago   133MB

	REPOSITORY:镜像名称
	TAG : 版本号(默认最新版本号为:latest)
	IMAGE ID :镜像ID
	CREATED :创建距离现在的时间段
	SIZE : 镜像大小

5).查看镜像的详细信息

#格式
docker inspect [镜像名称或镜像ID]
docker inspect mysql:5.7

#参数
-f : 格式化输出
[root@docker ~]# docker inspect -f '{{.Id}}' mysql:5.7    #获取某一项信息
sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
[root@docker ~]# docker inspect -f '{{.ContainerConfig.Hostname}}' redis
16535cfaf84a
#‘.’相当于linux里的根===路径

6).登录镜像仓库

#格式
docker login  [镜像的URL]  #默认情况下,docker login登录的是官方仓库,如果登录其他镜像仓库则需要指定镜像仓库的URL连接。

#实例
#1,先在官网上登录
#2,在xshell主机上登录
[root@docker ~]# docker login docker.io
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: caodan999
Password: ......
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded 

#可以查看dockerhub的密码
[root@docker ~]# cat /root/.docker/config.json 
{
	"auths": {
		"https://index.docker.io/v1/": {
			"auth": "Y2FvZGFuOTk5OjEzNTU2MTU0N"
		}
	}
}[root@docker ~]# echo "Y2FvZGFuOTk5OjEzNTU2MTU0N"|base64 -d

[root@Centos7 ~]# cat ~/.docker/config.json    #保存的登录信息
             

参数

--username|-u : 指定用户名
--password|-p : 指定密码

7).为镜像添加标签

#镜像标签的构成
docker.io/library/redis:latest
docker.io  : 镜像仓库的URL
library    :镜像仓库命名空间
redis	   : 镜像名称
latest	   : 镜像版本号

#打标签
	#格式
	docker tag [镜像ID]  镜像标签
	#实例
[root@docker ~]# docker images ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@docker ~]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
alpine        latest    d4ff818577bc   2 weeks ago     5.6MB
hello-world   latest    d1165f221234   4 months ago    13.3kB
alpine        3.10.3    965ea09ff2eb   20 months ago   5.55MB
[root@docker ~]# docker tag 965ea09ff2eb docker.io/caodan999/alpine:v3.10.3
[root@docker ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
alpine             latest    d4ff818577bc   2 weeks ago     5.6MB
hello-world        latest    d1165f221234   4 months ago    13.3kB
caodan999/alpine   v3.10.3   965ea09ff2eb   20 months ago   5.55MB
alpine             3.10.3    965ea09ff2eb   20 months ago   5.55MB

8).镜像上传(推送镜像)

#格式
docker push [镜像标签]
注:要想上传镜像,首先得登录镜像仓库,其次设置对应镜像仓库的tag

#实例
[root@docker ~]# docker push docker.io/caodan999/alpine:v3.10.3
The push refers to repository [docker.io/caodan999/alpine]
77cae8ab23bf: Mounted from library/alpine 
v3.10.3: digest: sha256:e4355b66995c96b4b468159fc5c7e3540fcef961189ca13fee877798649f531a size: 528


##可以改标签再次推送
[root@docker ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
alpine             latest    d4ff818577bc   2 weeks ago     5.6MB
hello-world        latest    d1165f221234   4 months ago    13.3kB
caodan999/alpine   v3.10.3   965ea09ff2eb   20 months ago   5.55MB
alpine             3.10.3    965ea09ff2eb   20 months ago   5.55MB
[root@docker ~]# docker tag 965ea09ff2eb caodan999/alpine:latest
[root@docker ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
alpine             latest    d4ff818577bc   2 weeks ago     5.6MB
hello-world        latest    d1165f221234   4 months ago    13.3kB
alpine             3.10.3    965ea09ff2eb   20 months ago   5.55MB
caodan999/alpine   latest    965ea09ff2eb   20 months ago   5.55MB
caodan999/alpine   v3.10.3   965ea09ff2eb   20 months ago   5.55MB
[root@docker ~]# docker push docker.io/caodan999/alpine:latest
The push refers to repository [docker.io/caodan999/alpine]
77cae8ab23bf: Layer already exists 
latest: digest: sha256:e4355b66995c96b4b468159fc5c7e3540fcef961189ca13fee877798649f531a size: 528

9).镜像的删除

#格式
docker rmi [镜像名称或者镜像ID]

#实例
[root@Centos7 ~]# docker rmi nginx
[root@Centos7 ~]# docker rmi nginx mysql redis  #删除多个镜像
[root@Centos7 ~]# docker rmi -f $(docker images -aq)  #删除全部的镜像

#参数
-f  : 强制删除
[root@Centos7 ~]# docker rmi -f nginx
    Untagged: nginx:latest
    Untagged: nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
注:当有容器正在使用镜像时,强制删除镜像,只能删除镜像的所有tag及名字, 不会删除镜像。

#去我的仓库拉取镜像
[root@docker ~]# docker pull caodan999/alpine

10).清空镜像

将当前系统中所有的没被使用到的镜像删除

#格式
docker image prune

#实例
[root@Centos7 ~]# docker image prune
    WARNING! This will remove all dangling images.
    Are you sure you want to continue? [y/N] y
    Total reclaimed space: 0B

#参数
-a : 删除所有未被使用到的镜像
-f : 强制删除
 [root@Centos7 ~]# docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: redis:latest
untagged: redis@sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4... ...

11).查看镜像历史(镜像的构建历史)

#格式
docker history [镜像ID或镜像名称]

#实例
[root@Centos7 ~]# docker history redis
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
7731472c3f2a   2 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B        
<missing>      2 months ago   /bin/sh -c #(nop) ADD file:edbe213ae0c825a5b…   5.61MB  

12).构建镜像、保存镜像(commit)

直接将容器保存为镜像

#格式 
docker commit [容器ID|容器名称]
docker commit -m="提交的描述信息" -a="作者" [容器ID]  目标镜像名:[TAG]

#实例
[root@Centos7 ~]# docker commit -a "Alvin" -m "这是一个docker镜像" -p be3b92e2886b  test:v1
sha256:4a06cd2af42877b5e2908073061f7ae1bf9e308a470bdfc0c6f906ef368aaed8
[root@Centos7 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
test         v1        4a06cd2af428   5 seconds ago   104MB

#参数
-a:作者信息
-m:提交信息
-p:提交时,暂停容器运行
#案例
[root@docker ~]# docker run -d --name alpine_sleep docker.io/mmdghh/alpine:latest /bin/sleep 300s
c3d1aa7a1bc2df47f47621f16e420883b334ef8e242349f1f734ad9cb4533968
[root@alice ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
c3d1aa7a1bc2        mmdghh/alpine:latest   "/bin/sleep 300s"   5 seconds ago       Up 4 seconds                            alpine_sleep
[root@alice ~]# docker exec -it c3d1aa7a1bc2 /bin/sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # echo "hello world" >1.txt
/ # ls
1.txt  bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # [root@alice ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
c3d1aa7a1bc2        mmdghh/alpine:latest   "/bin/sleep 300s"   45 seconds ago      Up 44 seconds                           alpine_sleep
[root@alice ~]# docker run -it docker.io/mmdghh/alpine:latest /bin/sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # 
写入到容器的文件并不会保存在镜像里
-p 保存到执行命令这一时刻的内容 之后更新的不会报错
[root@alice ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
c3d1aa7a1bc2        mmdghh/alpine:latest   "/bin/sleep 300s"   5 minutes ago       Up 4 minutes                            alpine_sleep
[root@alice ~]# docker commit -p alpine_sleep docker.io/mmdghh/alpine:v_1.txt 
sha256:11be5214792460b1e258a6d6e7dbca5dccfddce0d438c0ad9b04d78b147006e0
[root@alice ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mmdghh/alpine       v_1.txt             11be52147924        8 seconds ago       5.55MB
alpine              latest              389fef711851        3 weeks ago         5.58MB
hello-world         latest              bf756fb1ae65        12 months ago       13.3kB
mmdghh/alpine       latest              965ea09ff2eb        14 months ago       5.55MB
[root@alice ~]# docker run -it docker.io/mmdghh/alpine:v_1.txt /bin/sh
/ # ls
1.txt  bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # cat 1.txt 
hello world

13).保存镜像(import/export)

保存正在运行的容器为镜像压缩包

export: 将容器导出为镜像

#格式
docker export [容器的ID] > [包名称]
# 实例
	[root@Centos7 ~]# docker export be3b92e2886b > redis.tar  #保存镜像(打包)
    或者[root@docker ~]# docker export -o redis.tar be3b92e2886b
    [root@Centos7 ~]# ll | grep redis
    -rw-r--r--. 1 root root 104178688 Mar 18 17:30 redis.tar
    [root@Centos7 ~]# gzip redis  #给镜像压缩

导入镜像包(import)

    #格式
     docker import [包名称] [自定义镜像名称]
	# 实例
	[root@Centos7 ~]# docker import redis.tar test:v3
    sha256:7776db3402fb8d59f6121a3b1977b5e7016f4064cf59218fd1b06637cb0fca87
    [root@Centos7 ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
    test         v3        7776db3402fb   6 seconds ago   101MB

14).将镜像导出为镜像(save/load)

保存镜像为压缩包

保存镜像(save)的格式

docker save [镜像名称|镜像ID] > [包名称]
    [root@Centos7 ~]# docker save 7731472c3f2a > apline.tar
或者[root@docker ~]# docker save -o apline.tar 7731472c3f2a
[root@Centos7 ~]# ll	
-rw-r--r--. 1 root root   5888000 Mar 18 17:36 apline.tar
[root@Centos7 ~]# docker save -o apline-two.tar 7731472c3f2a
[root@Centos7 ~]# ll
total 148692
-rw-r--r--. 1 root root   5888000 Mar 18 17:36 apline.tar
-rw-------. 1 root root   5888000 Mar 18 17:37 apline-two.tar

[root@localhost ~]# docker load < nginx-save.tar  #下面是导入镜像的格式

15).导入镜像(load的格式:

docker load < [包名称]

[root@Centos7 ~]# docker load < apline.tar 
c04d1437198b: Loading layer [========================================>]   5.88MB/5.88MB
Loaded image ID: sha256:7731472c3f2a25edbb9c085c78f42ec71259f2b83485aa60648276d408865839
[root@Centos7 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
<none>       <none>    7731472c3f2a   2 months ago     5.61MB
注:save/load保存镜像无法自定义镜像名称,save保存镜像时如果使用ID保存则load导入镜像无名称,使用名称导入时才有名称。
[root@Centos7 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
busybox      latest    b97242f89c8a   2 months ago     1.23MB
[root@Centos7 ~]# docker save busybox:latest > busybox.tar
[root@Centos7 ~]# ll
total 150120
-rw-r--r--. 1 root root   1459200 Mar 18 17:43 busybox.tar
[root@Centos7 ~]# docker rmi b97242f89c8a
Untagged: busybox:latest
Untagged: busybox@sha256:c5439d7db88ab5423999530349d327b04279ad3161d7596d2126dfb5b02bfd1f
Deleted: sha256:b97242f89c8a29d13aea12843a08441a4bbfc33528f55b60366c1d8f6923d0d4
Deleted: sha256:0064d0478d0060343cb2888ff3e91e718f0bffe9994162e8a4b310adb2a5ff74
[root@Centos7 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
[root@Centos7 ~]# docker load < busybox.tar 
0064d0478d00: Loading layer [==================================================>]   1.45MB/1.45MB
Loaded image: busybox:latest
[root@Centos7 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
busybox      latest    b97242f89c8a   2 months ago     1.23MB

16).保存镜像三种方式的区别

# 1.export保存的镜像体积要小于save(save保存更完全,export保存会丢掉一些不必要的数据)
# 2.export可以重命名镜像名称而save则不行
# 3.save可以同时保存多个镜像而export则不行

#4、两种保存镜像的区别
	1、dockers export 保存的镜像的体积小于docker save 
	2、docker save是完全保存,而docker export是仅仅保存镜像
	3、docker load不能够自定义镜像名称,docker impprt 可以
	4、docker import未保存镜像默认的启动命令,docker load保存了
	5、docker save一般情况下,使用的场景是项目迁移,docker export一般情况下是作为基础镜像

17).显示docker的版本信息

[root@docker ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.3
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        48d30b5
 Built:             Fri Jan 29 14:34:14 2021
 OS/Arch:           linux/amd64
... ... ...

18).显示docker的系统信息(包括镜像和容器的数量)

[root@docker ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
... ... ...

19).万能帮助命令

[root@docker ~]# docker --help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default
                           "/root/.docker")
  -c, --context string     Name of the context to use to connect to the
                           daemon (overrides DOCKER_HOST env var and default
                           context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging leve
  ..........
原文地址:https://www.cnblogs.com/caodan01/p/15062889.html