docker 镜像

1.含义 镜像是运行容器的模板,官方Docker Hub 仓库已经提供了许多镜像共开发者使用。如果我们需要获取某个镜像则可以去Docker仓库下载所需的镜像。

2.格式: docker pull [指定仓库URL]/[命名空间]/[镜像名称]:[镜像版本ID]

              默认情况下:镜像URL是:docker.io, 命名空间名称:library

3.实例:docker pull  centos

下载的时候,我们可以看到有若干层组成,像a27fd8080b517143c这样的字符串是层的唯一ID(实际上,完整的ID包括256比特, 64个十六进制字符组成)。使用docker pull 命令下载中会获取并输出镜像的各层信息。当不同的镜像包括相同的层的时候,本地仅存一份内容,减小存储空间。

二、查看镜像信息 

 镜像主要包括镜像文件、镜像tag以及镜像详细信息等等

1.查看镜像列表

docker images

3.参数:

-a : 列出系统临时镜像文件

--digests=true|false : 列出系统镜像摘要

-q :    只显示镜像ID

 2.字段信息

列举信息中,可以看到几个字段信息: 1)镜像来源:来自哪个仓库,默认来自:hub.docker.com 2)镜像标签:比喻1.17、1000-teach-2020-10-28-13-40-27 3)镜像ID:例如22fdec3d9a6d 4)镜像创建时间:例如:3 weeks ago 5)镜像大小:127MB 其中镜像的ID信息十分重要,它唯一标识了镜像。在使用镜像ID的时候,一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID。 TAG信息用于标记来自同一个仓库的不同镜像。TAG在同一个仓库中是唯一的。 镜像大小信息只是表示了该镜像的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像逻辑体积之和。

3.查看镜像详细信息

使用docker inspect 命令获取镜像的详细信息,包括PID、作者、架构等等。

1.格式: docker inspect [镜像名称]:[版本号] | [镜像ID]

2.实例:

三、镜像tag

为了方便后续工作中使用特定的镜像,还可以使用docker tag命令来为本地的镜像添加标签。

1.格式 docker tag [镜像ID] [别名]:[版本号]

docker tag 5d0da3dc9764  nginx:latest

四、查看镜像历史

1.格式: docker history [镜像名称或ID]

3.作用: 查看镜像构建步骤。

4.注意: 有些构建信息过长,可以使用--no-trunc选项来输出完整信息。

五、搜索镜像

在docker中搜索镜像主要使用Search子命令,默认只搜索Docker Hub官方镜像仓库中的镜像

1.格式: docker search [参数] [镜像名称

搜索官方提供的带有Redis关键字的镜像

docker search -f is-official=true  redis

3.解释: NAME : 镜像名称 DESCRIPTION 镜像简介 STARS  收藏数

OFFICIAL : 是否是官方镜像

AUTOMATED : 是否是自构建镜像

参数: -f: 过滤 is-official=true --no-trunc :

不截断输出 --limit : 设置查询的条数

六、删除镜像和清理镜像

1.删除镜像:不能删除正在使用镜像运行的容器。

 docker rmi   镜像名称或ID

-f: 强制删除镜像

删除镜像为<none>的镜像

docker rmi -f $(docker images | grep "<none>" | awk '{print $3}')

删除所有没被使用的镜像(就是容器列表里没有使用的镜像)

docker image prune -a #这种会有确认提示

docker image prune -a -f   #强制删除,不确认直接删除

1.使用 export 和 import

export 和 import的针对点是容器,将本机的容器导出为镜像包。

1.格式: docker export [容器名称] > [压缩包名称]

docker import [压缩包名称] [镜像名称]

2.示例

#使用export保存容器为镜像

[root@instance-gvpb80ao docs]# docker export daf9c3656be3 > nginx.tar

[root@instance-gvpb80ao docs]# ll | grep nginx.tar -rw-r--r-- 1 root root 135117824 9月 24 20:51 nginx.tar

使用import导入包为镜像 [root@instance-gvpb80ao docs]# docker import nginx.tar test/nginx:v1 sha256:02107323de1b074c5d2034b01eff855fec5922b45776c2721882d100ba6dd15b [root@instance-gvpb80ao docs]# docker images | grep test test/nginx v1

02107323de1b 22 seconds ago 131MB

2.使用 load 和 save

save 和 load的针对的点是镜像,将本机的镜像导入、导出为镜像包。

#1.格式:
	docker save [镜像ID...] > [压缩包名称]
	docker load < [压缩包名称]

注:使用镜像ID保存镜像时,导入时没有名称
	
#2.示例
#使用save保存镜像
[root@instance-gvpb80ao docs]# docker save 6858809bf669 > busybox.tar
[root@instance-gvpb80ao docs]# ll | grep busy
-rw-r--r-- 1 root root   1458176 9月  24 21:01 busybox.tar

#使用save保存多个镜像
[root@instance-gvpb80ao docs]# docker save -o test.tar busybox nginx:1.18.0
[root@instance-gvpb80ao docs]# docker load < test.tar
Loaded image: busybox:latest
Loaded image: nginx:1.18.0

#使用load导入镜像
[root@instance-gvpb80ao docs]# docker load < busybox.tar
[root@instance-gvpb80ao docs]# docker load -i busybox.tar
Loaded image ID: sha256:6858809bf669cc5da7cb6af83d0fae838284d12e1be0182f92f6bd96559873e3
[root@instance-gvpb80ao docs]# docker images | grep 685880
busybox                                                           latest                     6858809bf669        2 weeks ago         1.23MB

3.两种方案的差别

1、针对的对象不一样
export和import针对的是容器,save和load针对的是镜像

2、save是完全保存, export是部分保存

3.文件大小不同
export导出的镜像文件体积小于 save 保存的镜像

4.是否可以对镜像重命名
docker import可以为镜像指定新名称,docker load不能对载入的镜像重命名。

5.是否可以同时将多个镜像打包到一个文件中
docker export不支持,docker save支持。

6.是否包含镜像历史
save保存的是原生的镜像,export保存成一个新的镜像
export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息(即仅保存容器当时的快照状态),所以无法进行回滚操作。

save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。

[root@instance-gvpb80ao docs]# docker history 6858809bf669cc5da7cb6af83d0fae838284d12e1be0182f92f6bd96559873e3
IMAGE        CREATED       CREATED BY                   SIZE        COMMENT
6858809bf669    2 weeks ago     /bin/sh -c #(nop) CMD ["sh"]          0B
<missing>      2 weeks ago     /bin/sh -c #(nop) ADD file:72be520892d0a903d…  1.23MB
 
7.应用场景不同
save应用场景在部署或者需要追溯的场景中,export应用场景在作为基础镜像时使用.
docker export的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。

docker save的应用场景:如果我们的应用是使用docker-compose.yml编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用docker save将用到的镜像打个包,然后拷贝到客户服务器上使用docker load载入。
Docker 中,镜像(Image)是一个轻量级、可执行的软件包,其中包含了运行特定应用程序所需的所有代码、运行时、库、环境变量和配置等信息。Docker 镜像可以看作是一个只读的模板,用于创建容器(Container)。 Docker 镜像可以通过以下几种方式获取: 1. 从 Docker Hub 下载:Docker Hub 是 Docker 官方提供的公共镜像仓库,包含了大量的镜像,可以通过 `docker pull` 命令从 Docker Hub 上下载镜像,例如: ``` docker pull ubuntu:latest ``` 上面的命令将会下载最新版本的 Ubuntu 镜像。 2. 通过 Dockerfile 构建:Dockerfile 是一个文本文件,其中包含了一系列构建镜像的指令和配置信息,可以通过 `docker build` 命令根据 Dockerfile 构建镜像,例如: ``` docker build -t my-image . ``` 上面的命令将会在当前目录下的 Dockerfile 中定义的基础上构建一个名为 `my-image` 的镜像。 3. 从已有容器创建:可以通过 `docker commit` 命令从一个已有的容器中创建新的镜像,例如: ``` docker commit my-container my-image ``` 上面的命令将会创建一个名为 `my-image` 的新镜像,其中包含了 `my-container` 容器的所有修改。 Docker 镜像可以使用 `docker images` 命令查看当前系统中已有的镜像列表,也可以使用 `docker rmi` 命令删除不需要的镜像。在使用 Docker 时,镜像是一个非常重要的概念,通过合理地管理镜像,可以提高应用程序的部署效率和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值