三、docker镜像(一)
docker 镜像是 docker 中三大概念之一,其主要作用是作为启动容器的模板。
一、获取镜像
镜像是运行容器的模板,官方 Docker Hub 仓库已经提供了许多镜像共开发者使用。如果我们需要获取某 个镜像则可以去 docker 仓库下载所需的镜像。 下载镜像的格式:docker pull [仓库的 URL]/[名称空间]/[仓库的名称]:[版本号]
- 搜索镜像
在docker中搜索镜像主要使用Search子命令,默认只搜索Docker Hub官方镜像仓库中的镜像。其语法为docker search [option] keyword
。支持的命令选项主要包括:
-f : 过滤输出内容
# 搜索官方提供的带有 Redis 关键字的镜像
[root@master ~]# docker search -f is-official=true redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9798 [OK]
## 搜索被收藏超过 8000 个的并且关键词包括 Redis 的镜像
[root@master ~]# docker search -f stars=8000 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9798 [OK]
[root@master ~]# docker pull nginx:1.17
1.17: Pulling from library/nginx
afb6ec6fdc1c: Pull complete
b90c53a0b692: Pull complete
11fa52a0fdc0: Pull complete
Digest: sha256:6fff55753e3b34e36e24e37039ee9eae1fe38a6420d8ae16ef37c92d1eb26699
Status: Downloaded newer image for nginx:1.17
docker.io/library/nginx:1.17
下载的时候,我们可以看到有若干层组成,像 afb6ec6fdc1c 这样的字符串是层的唯一 ID(实际上,完整的 ID 包括 256 比特, 64 个十六进制字符组成)。使用 docker pull 命令下载中会获取并输出镜像的各层信息。当不 同的镜像包括相同的层的时候,本地仅存一份内容,减小存储空间。
# 格式
docker pull [镜像名称]
# 实例
[root@Centos7 ~]# docker pull redis
Using default 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
二、查看镜像信息
2.1镜像列表
[root@master ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.23 cbe8815cbea8 4 months ago 546MB
nginx 1.17 9beeba249f3e 15 months ago 127MB
列举信息中,可以看到几个字段信息:
镜像来源:来自哪个仓库,默认来自:hub.docker.com
镜像标签:比喻 1.17
镜像 ID:例如 9beeba249f3e
镜像创建时间:例如:15 months ago
镜像大小:127MB
其中镜像的 ID 信息十分重要,它唯一标识了镜像。在使用镜像 ID 的时候,一般可以使用该 ID 的前若干个 字符组成的可区分串来替代完整的 ID。
TAG 信息用于标记来自同一个仓库的不同镜像。TAG 在同一个仓库中是唯一的。
镜像大小信息只是表示了该镜像的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用 的存储空间会小于各镜像逻辑体积之和。
镜像物理结构:
- 分层构建,联合挂载
image 子命令主要支持如下选项: - -a : 列出所有(包括临时文件)镜像文件
- --digests=true|false:列出镜像的数字摘要值
- -q : 仅显示 ID 信息
2.2为镜像添加 tag
为了方便后续工作中使用特定的镜像,还可以使用 docker tag 命令来为本地的镜像添加标签。
docker tag : 标记本地镜像,将其归入某一仓库。
# 镜像标签的构成
docker.io/library/redis:latest
docker.io : 镜像仓库的URL
library :镜像仓库命名空间
redis : 镜像名称
latest : 镜像版本号
# 打标签
# 格式
docker tag [镜像ID] 镜像标签
[root@Centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 621ceef7494a 2 months ago 104MB
nginx latest f6d0b4767a6c 2 months ago 133MB
[root@Centos7 ~]# docker tag 621ceef7494a registry.cn-hangzhou.aliyuncs.com/tom/redis:v2
[root@Centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 621ceef7494a 2 months ago 104MB
registry.cn-hangzhou.aliyuncs.com/alvinos/redis v2 621ceef7494a 2 months ago 104MB
nginx latest f6d0b4767a6c 2 months ago 133MB
2.3 获取镜像的详细信息
使用 docker inspect 命令获取镜像的详细信息,包括 PID、作者、架构等等。
# 格式
docker inspect [镜像名称或镜像ID]
[root@master ~]# docker inspect mysql:8.0.23
[
{
"Id": "sha256:cbe8815cbea8fb86ce7d3169a82d05301e7dfe1a8d4228941f23f4f115a887f2",
"RepoTags": [
"mysql:8.0.23",
"tom-mysql:latest"
],
"RepoDigests": [
"mysql@sha256:6e0014cdd88092545557dee5e9eb7e1a3c84c9a14ad2418d5f2231e930967a38"
],
"Parent": "",
"Comment": "",
"Created": "2021-04-10T07:22:41.285951659Z",
"Container": "1f81d0801dce5d57979f73bcebcb363307a6a345cf8910ad61b06a556a1b974e",
"ContainerConfig": {
"Hostname": "1f81d0801dce",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3306/tcp": {},
"33060/tcp": {}
},
....此处略去千百行
# 参数
-f : 格式化输出
[root@Centos7 ~]# docker inspect -f '{{.Id}}' 621ceef7494a
sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
[root@Centos7 ~]# docker inspect -f '{{.ContainerConfig.Hostname}}' redis
16535cfaf84a
本文来自博客园,作者:看啥,转载请注明原文链接:https://www.cnblogs.com/jykn92/p/15152240.html