赞
踩
在云时代,开发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的限制;
同时必须满足“任何时间任何地点”可获取可使用的特点。因此,开发者们需要一种新型的创建分布式应用程序
的方式,快速分发部署,而这正是 Docker 所能够提供的最大优势。Docker 提供了一种更为聪明的方式,通过
容器来打包应用、解耦应用和运行平台。这意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,
无论新旧服务器是否是同一类别的平台。这无疑帮助我们节约了大量的宝贵时间,并降低部署过程出现问题的风
险。
对于开发和运维人员来说,最梦寐以求的效果可能就是一次创建和配置,之后可以在任意地方、任意时间让
应用正常运行,而 Docker 恰恰可以实现这一中级目标。具体来说,在开发和运维过程中,Docker 具有以下几
个方面的优势:
Docker 以及其他容器技术,都属于操作系统虚拟化范畴,操作系统细腻化最大的特点就是不需要额外的
supervisor 支持。Docker 虚拟化方式之所以有众多优势,跟操作系统虚拟化技术自身的设计和实现分不开。
传统方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。Docker 容器时在
操作系统层面实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。
Docker 目前支持 CentOS 7 及以后版本。系统的要求跟 Ubuntu 情况类似,64 位操作系统,内核至少是 3.10
以上。
查看系统内核版本
[root@docker ~]# uname -r
3.10.0-1160.21.1.el7.x86_64
[root@docker ~]# uname -a
备份原来 YUN 源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 更换 YUM 源
curl -o /etc/yum.repos.d/CentOS-Base.repo
https://mirrors.aliyun.com/repo/Centos-7.repo
# 刷新 yum 源缓存
yum makecache
yum update -y --exclud=kernel*
sudo yum remove docker docker-common docker-selinux docker-engine -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
清除元数据
yum clean all
开启缓存
yum makecache
yum install docker-ce -y
打开阿里云官网 产品 --> 容器与中间件 --> 容器与镜像服务ACR --> 管理控制台 --> 镜像加速器 --> CentOS
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://vf52ltmx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl enable --now docker
# 第一种方式
安装nginx
docker run -d -P nginx 装nginx
查看端口号
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATU
5f3abc94d804 nginx "/docker-entrypoint.…" About a minute ago Up Abohen
web页面访问
http://10.0.0.30:49153/
# 第二种方式
docker info
只要docker info 能出来东西,即可说明已经安装
Ubuntu 操作系统对 Docker 的支持十分成熟,可以支持包括 x86_64、armhf 等系统架构,只要是 64 位即
可。
Docker目前支持最低Ubuntu版本为14.04LTS,但实际上从稳定性上考虑,推荐使用16.04LTS 或18.04LTS
版本,并且系统内核越新越好,以支持 Docker 最新的特性
# 第一种方式
root@alvin-test-os:~# uname -a
Linux alvin-test-os 4.15.0-117-generic #118-Ubuntu SMP Fri Sep 4 20:02:41 UTC 2020
x86_64 x86_64 x86_64 GNU/Linux
# 第二种方式
root@alvin-test-os:~# cat /proc/version
Linux version 4.15.0-117-generic (buildd@lcy01-amd64-008) (gcc version 7.5.0 (Ubuntu
7.5.0-3ubuntu1~18.04)) #118-Ubuntu SMP Fri Sep 4 20:02:41 UTC 2020
root@alvin-test-os:~# apt-get update
root@alvin-test-os:# apt-get -y install apt-transport-https ca-certificates curl
software-properties-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
curl is already the newest version (7.58.0-2ubuntu3.10).
The following additional packages will be installed:
python3-software-properties unattended-upgrades
Suggested packages:
。。。此处略去很多行
1.2.4、 、 安装 GPG 证书
root@alvin-test-os:~# curl
root@alvin-test-os:~# curl -fsSL
https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
OK
root@alvin-test-os:~# sudo add-apt-repository "deb [arch=amd64]
https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu bionic InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu bionic-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security InRelease
root@alvin-test-os:~# sudo apt-get -y update Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu bionic InRelease Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu bionic-updates InRelease Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security InRelease Hit:4 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic InRelease Reading package lists... Done root@alvin-test-os:~# sudo apt-get -y install docker-ce Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: aufs-tools cgroupfs-mount containerd.io docker-ce-cli git git-man libcurl3-gnutls liberror-perl pigz Suggested packages: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn The following NEW packages will be installed: aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli git git-man libcurl3-gnutls liberror-perl pigz 0 upgraded, 10 newly installed, 0 to remove and 86 not upgraded.
root@alvin-test-os:~# docker version
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:36 2020
OS/Arch: linux/amd64
Docker 中有三个核心概念:镜像、容器和仓库。因此,准确把握这三大概念对于掌握 Docker 技术尤为重
要。
Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。简而言之:镜像就是启动一个容器的模板。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。简而言之:容器就是对外提供服务的进程。或者容器就是镜像启动起来的一个实例。
用来保存镜像的仓库。当我们构建好自己的镜像之后,需要存放在仓库中,当我们需要启动一个镜像时,可以在仓库中下载下来。简而言之:仓库是用来存放镜像的地方。
UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像
> 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。
以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载
最大的一个好处就是 - 共享资源
比如:有多个镜像都从相同的 base 镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,
同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。
Docker镜像都是只读的
当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
官方仓库:hub.docker.com https://hub.docker.com/search?q=&type=image
自己的私有仓库:Harbor
阿里云私有仓库:registry.cn-hangzhou.aliyuncs.com
#格式
docker search [镜像名称]
# 实例
[root@docker ~]# docker search nginx
[root@docker ~]# docker search nginx --filter=STARS=200 #搜索出来的镜像就是STARS大于200的
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 15161 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2047 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 816 [OK]
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 213
#格式: docker pull [镜像名称] #实例: [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
注意:
docker 拉取镜像报错:x509: certificate has expired or is not yet valid
当docker pull镜像时出现 x509 问题,一般应该是证书问题或者系统时间问题
1.先 date 看一下时间对不对,如果时间跟实际时间对不上一般就是系统时间问题.
ntpdate time1.aliyun.com
即可
2.如果是证书的问题需要编辑 daemo.json 文件:vi /etc/docker/daemon.json
文件内添加:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
3.然后重启下 docker 服务:docker restart
#格式
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4cdc5dd7eaad 7 days ago 133MB
redis latest 08502081bff6 2 weeks ago 105MB
mysql latest 5c62e459e087 3 weeks ago 556MB
#参数
-q : 只显示镜像ID
[root@docker ~]# docker images -q
4cdc5dd7eaad
08502081bff6
5c62e459e087
-a : 列出所有(包括临时文件)镜像文件
#格式
docker inspect [镜像名称或镜像ID]
[root@docker ~]# docker inspect redis
#参数
-f : 格式化输出
[root@docker ~]# docker inspect -f '{{.Id}}' 621ceef7494a
sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
[root@docker ~]# docker inspect -f '{{.ContainerConfig.Hostname}}' redis
16535cfaf84a
#‘.’相当于linux里的根===路径
#格式 docker login #默认情况下,docker login登录的是官方仓库,如果登录其他镜像仓库则需要指定镜像仓库的URL连接。 sudo docker login --username=yh01j**** registry.cn-hangzhou.aliyuncs.com #实例 [root@docker ~]# docker login registry.cn-hangzhou.aliyuncs.com Username: yh01jiang 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 #保存的登录信息 [root@docker ~]# cat ~/.docker/config.json { "auths": { "https://index.docker.io/v1/": { "auth": "eWgwMWppYW5nOnl1YW5oYW8xOTk3MTIxMQ==" }, "registry.cn-hangzhou.aliyuncs.com": { "auth": "eWgwMWppYW5nOnl1YW5oYW8xOTk3MTIxMQ==" } } } # 参数 --username|-u : 指定用户名 --password|-p : 指定密码
#镜像标签的构成 [root@docker ~]# docker pull redis=======》 docker.io/library/redis:latest docker.io : 镜像仓库的URL library :镜像仓库命名空间 redis : 镜像名称 latest : 镜像版本号 #打标签 #格式 docker tag [镜像ID] 镜像标签 #实例 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/alvinos/redis v1 4cdc5dd7eaad 7 days ago 133MB registry.cn-hangzhou.aliyuncs.com/alvinos/redis v2 4cdc5dd7eaad 7 days ago 133MB nginx latest 4cdc5dd7eaad 7 days ago 133MB redis latest 08502081bff6 2 weeks ago 105MB mysql latest 5c62e459e087 3 weeks ago 556MB [root@Centos7 ~]# docker tag 08502081bff6 registry.cn-hangzhou.aliyuncs.com/alvi/redis:v5 [root@Centos7 ~]# docker images #改后查看(名字不同但是ID相同) [root@docker ~]# docker images registry.cn-hangzhou.aliyuncs.com/alvi/redis v5 08502081bff6 2 weeks ago 105MB redis latest 08502081bff6 2 weeks ago 105MB mysql latest 5c62e459e087 3 weeks ago 556MB
注意:首先必须在阿里云建立镜像仓库(私有、本地)
#格式 docker push [镜像标签] 注:要想上传镜像,首先得登录镜像仓库,其次设置对应镜像仓库的tag [root@docker ~]# docker login --username=yh01jiang registry.cn-hangzhou.aliyuncs.com Password: [root@Centos7 ~]# docker tag 08502081bff6 registry.cn-hangzhou.aliyuncs.com/alvi/redis:v5 #实例 [root@docker ~]# docker push registry.cn-hangzhou.aliyuncs.com/alvi/redis:v5 The push refers to repository [registry.cn-hangzhou.aliyuncs.com/alvi/redis] 9e1fddfb3a22: Pushed a71d36a87572: Pushed 0b7b774038f0: Pushed ebef6caacb96: Pushed 245c9d23f653: Pushed 764055ebc9a7: Pushed v5: digest: sha256:87204a944dc825e2e17019dc438886d4d2b5de2862686c5d69cbc015fd0488d7 size: 1574
#格式 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 rm -f 4cdc5dd7eaad [root@docker ~]# docker images [root@docker ~]# docker rmi -f 4cdc5dd7eaad Untagged: registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v2 Deleted: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 就可以删除所有镜像了
#格式
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 : 删除所有镜像
[root@Centos7 ~]# docker image prune -a
-f :强制删除镜像,而不进行提示
[root@Centos7 ~]# docker image prune -a -f
[root@docker ~]# docker history 08502081bff6 IMAGE CREATED CREATED BY SIZE COMMENT 08502081bff6 2 weeks ago /bin/sh -c #(nop) CMD ["redis-server"] 0B <missing> 2 weeks ago /bin/sh -c #(nop) EXPOSE 6379 0B <missing> 2 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B <missing> 2 weeks ago /bin/sh -c #(nop) COPY file:df205a0ef6e6df89… 374B <missing> 2 weeks ago /bin/sh -c #(nop) WORKDIR /data 0B <missing> 2 weeks ago /bin/sh -c #(nop) VOLUME [/data] 0B <missing> 2 weeks ago /bin/sh -c mkdir /data && chown redis:redis … 0B <missing> 2 weeks ago /bin/sh -c set -eux; savedAptMark="$(apt-m… 31.7MB <missing> 2 weeks ago /bin/sh -c #(nop) ENV REDIS_DOWNLOAD_SHA=ba… 0B <missing> 2 weeks ago /bin/sh -c #(nop) ENV REDIS_DOWNLOAD_URL=ht… 0B <missing> 2 weeks ago /bin/sh -c #(nop) ENV REDIS_VERSION=6.2.4 0B <missing> 2 weeks ago /bin/sh -c set -eux; savedAptMark="$(apt-ma… 4.15MB <missing> 2 weeks ago /bin/sh -c #(nop) ENV GOSU_VERSION=1.12 0B <missing> 2 weeks ago /bin/sh -c groupadd -r -g 999 redis && usera… 329kB <missing> 3 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B <missing> 3 weeks ago /bin/sh -c #(nop) ADD file:4903a19c327468b0e… 69.3MB 注意:有些构建信息过长,可以使用--no-trunc 选项来输出完整信息
-f : 过滤输出内容:
# 搜索官方提供的带有 Redis 关键字的镜像
[root@docker ~]# docker search -f is-official=true redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9675 [OK]
#搜索被收藏超过 8000 个的并且关键词包括 Redis 的镜像
[root@docker ~]# docker search -f stars=8000 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9675 [OK]
–limit: 限制输出结果:
[root@docker ~]# docker search -f stars=8 --limit 3 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9675 [OK]
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 61 [OK]
redislabs/redisearch Redis With the RedisSearch module pre-loaded… 36
–no-trunc: 不截断输出结果:
[root@docker ~]# 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. 9675 [OK]
rediscommander/redis-commander Alpine image for redis-commander - Redis management tool. 61 [OK]
redislabs/redisearch Redis With the RedisSearch module pre-loaded. See http://redisearch.io 36
[root@docker ~]#
-a 作者信息
-m 提交信息
-p 提交时,暂停容器运行
#格式 (保存正在运行的容器直接为镜像) docker commit [容器ID|容器名称] [root@docker ~]# docker commit -h Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] #示例 [root@docker ~]# docker run -d -P nginx WARNING: IPv4 forwarding is disabled. Networking will not work. b496a7b708c453171d3f75b9a800dd9c644af25b8324b67f26af541ae268f883 [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b496a7b708c4 nginx "/docker-entrypoint.…" 8 seconds ago Up 6 seconds 0.0.0.0:49153->80/tcp, :::49153->80/tcp flamboyant_mendeleev [root@docker ~]# docker commit -a "oldjiang" -m "这是一个docker镜像" -p b496a7b708c4 test:v1 sha256:82bc8c05499617f57cd1928ddd6984f75735b50621aed97c1b529a1bda5765c7 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test v1 82bc8c054996 33 seconds ago 133MB nginx latest 4cdc5dd7eaad 7 days ago 133MB redis latest 08502081bff6 2 weeks ago 105MB alpine latest d4ff818577bc 4 weeks ago 5.6MB busybox latest 69593048aa3a 5 weeks ago 1.24MB
#保存正在运行的容器为镜像压缩包 #格式 docker export [容器的ID] > [包名称] # 实例 [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b496a7b708c4 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 0.0.0.0:49153->80/tcp, :::49153->80/tcp flamboyant_mendeleev [root@docker ~]# docker export b496a7b708c4 > nginx.tar [root@docker ~]# ll 总用量 132496 -rw-------. 1 root root 1701 3月 29 15:52 anaconda-ks.cfg -rw-r--r-- 1 root root 135661568 7月 14 19:51 nginx.tar ##导入镜像包 #格式 docker import [包名称] [自定义镜像名称] # 实例 [root@docker ~]# docker import nginx.tar test:v7 sha256:c054f84d88823a8e03fce210d0f15afe152a60cd47db7c6fee4876546d13518b [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SI# 保存镜像为压缩包 # 保存镜像的格式: docker save [镜像名称|镜像ID] > [包名称]ZE test v7 c054f84d8882 6 seconds ago 132MB
补充:容器id
# 保存镜像为压缩包 # 保存镜像的格式: docker save [镜像名称|镜像ID] > [包名称] #示例 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 4cdc5dd7eaad 7 days ago 133MB redis latest 08502081bff6 2 weeks ago 105MB alpine latest d4ff818577bc 4 weeks ago 5.6MB busybox latest 69593048aa3a 5 weeks ago 1.24MB [root@docker ~]# docker save 08502081bff6 > redis.tar [root@docker ~]# ll -rw-r--r-- 1 root root 108812800 7月 14 20:03 redis.tar [root@docker ~]# docker save -o redis-two.tar 08502081bff6 [root@docker ~]# ll -rw-r--r-- 1 root root 108812800 7月 14 20:03 redis.tar -rw------- 1 root root 108812800 7月 14 20:03 redis-two.tar # 导入镜像的格式: docker load < [包名称] [root@docker ~]# docker rmi redis:latest Untagged: redis:latest Untagged: redis@sha256:b6a9fc3535388a6fc04f3bdb83fb4d9d0b4ffd85e7609a6ff2f0f731427823e3 Deleted: sha256:08502081bff61084d64fc76f0f90ea39b89935cd071d9e12c5374ae191ff53c0 Deleted: sha256:ae5155f07c6cd11da80503d9eeee8f6da1733ce844ae793d0a836f87331ccfe8 Deleted: sha256:6be98c1f12093b274ce5a8a08aade2e317646a3d796f06bfbb1ceb64a3667d79 Deleted: sha256:d39ca9a7caf57ae0172f935bedc3f00eb11793e49736b36894bbdad81c48da76 Deleted: sha256:72b2f38a39460857c7f833d9fb5ae1ad23f1454c90bf85040545daab59245690 Deleted: sha256:fc6698595ab9165eb0f1e07b0930f45e925ab604b8549f225c93a6f83631ae40 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test v7 c054f84d8882 15 minutes ago 132MB test v1 82bc8c054996 33 minutes ago 133MB nginx latest 4cdc5dd7eaad 7 days ago 133MB alpine latest d4ff818577bc 4 weeks ago 5.6MB busybox latest 69593048aa3a 5 weeks ago 1.24MB [root@docker ~]# docker load < redis redis.tar redis-two.tar [root@docker ~]# docker load < redis.tar 245c9d23f653: Loading layer [==================================================>] 338.4kB/338.4kB ebef6caacb96: Loading layer [==================================================>] 4.194MB/4.194MB 0b7b774038f0: Loading layer [==================================================>] 31.71MB/31.71MB a71d36a87572: Loading layer [==================================================>] 2.048kB/2.048kB 9e1fddfb3a22: Loading layer [==================================================>] 3.584kB/3.584kB Loaded image ID: sha256:08502081bff61084d64fc76f0f90ea39b89935cd071d9e12c5374ae191ff53c0 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test v7 c054f84d8882 15 minutes ago 132MB test v1 82bc8c054996 33 minutes ago 133MB nginx latest 4cdc5dd7eaad 7 days ago 133MB <none> <none> 08502081bff6 2 weeks ago 105MB alpine latest d4ff818577bc 4 weeks ago 5.6MB busybox latest 69593048aa3a 5 weeks ago 1.24MB # 注:save/load保存镜像无法自定义镜像名称,save保存镜像时如果使用ID保存则load导入镜像无名称,使用名称导入时才有名称。 [root@docker ~]# docker image prune -a ..... sha256:82bc8c05499617f57cd1928ddd6984f75735b50621aed97c1b529a1bda5765c7 deleted: sha256:09fd3f53143ca6bd4655480b010662f5a2da19f868e22faeb44ffd62b17c16ea untagged: test:v7 deleted: sha256:c054f84d88823a8e03fce210d0f15afe152a60cd47db7c6fee4876546d13518b deleted: sha256:0fae7b29db039023c402412d8950dafb7c2b6143770906417ba50f5c6f956682 untagged: busybox:latest untagged: busybox@sha256:0f354ec1728d9ff32edcd7d1b8bbdfc798277ad36120dc3dc683be44524c8b60 deleted: sha256:69593048aa3acfee0f75f20b77acb549de2472063053f6730c4091b53f2dfb02 deleted: sha256:5b8c72934dfc08c7d2bd707e93197550f06c0751023dabb3a045b723c5e7b373 ...... Total reclaimed space: 132.7MB [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 4cdc5dd7eaad 7 days ago 133MB [root@docker ~]# docker load < busybox.tar 5b8c72934dfc: Loading layer [==================================================>] 1.455MB/1.455MB Loaded image: busybox:latest [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 4cdc5dd7eaad 7 days ago 133MB busybox latest 69593048aa3a 5 weeks ago 1.24MB 验证成功
1、export保存的镜像体积要小于save(save保存更完全,export保存会丢掉一些不必要的数据)
2、export可以重命名镜像名称而save则不行
3、save可以同时保存多个镜像而export则不行
4.是否包含镜像历史
export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息(即仅
保存容器当时的快照状态),所以无法进行回滚操作。
save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer
总结:
删除镜像
docker rmi [镜像名称或者镜像ID]
清空镜像
docker image prune -a
删除容器
docker rm [容器id]
查看容器ID
docker ps
、
注意:
一般情况下,export自己使用
交给别人save
[root@docker ~]# 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.6 GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d runc: Version: 1.0.0-rc95 GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7 docker-init: Version: 0.19.0 GitCommit: de40ad0
[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) scan: Docker Scan (Docker Inc., v0.8.0) Server: Containers: 2 Running: 1 Paused: 0 Stopped: 1 Images: 2 Server Version: 20.10.7 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7 init version: de40ad0 Security Options: seccomp Profile: default Kernel Version: 3.10.0-1160.21.1.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 972.3MiB Name: docker ID: YHNI:4LVA:PYOC:XYKT:6GM5:7BEY:TMZU:KWT3:SWTC:HYYX:ED5T:K4M2 Docker Root Dir: /var/lib/docker Debug Mode: false Username: yh01jiang Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://vf52ltmx.mirror.aliyuncs.com/ Live Restore Enabled: false WARNING: IPv4 forwarding is disabled WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
[root@docker ~]# docker --help 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 level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。