- 一、docker官方介绍
- 二、Docker 概念
- 三、docker的安装和使用
- 四、docker卸载 及镜像相关命令
- 1.卸载依赖
- 2.删除目录
- 3.镜像加速器(docker优化)
- 4.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
..........