1. 程式人生 > 其它 >三、docker映象

三、docker映象

docker 映象是 docker 中三大概念之一,其主要作用是作為啟動容器的模板。

一、獲取映象

映象是執行容器的模板,官方 Docker Hub 倉庫已經提供了許多映象共開發者使用。如果我們需要獲取某 個映象則可以去 docker 倉庫下載所需的映象。 下載映象的格式:docker pull [倉庫的 URL]/[名稱空間]/[倉庫的名稱]:[版本號]

  • 搜尋映象
#格式
	docker search [映象名稱]
# 例項
[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 : 標記本地映象,將其歸入某一倉庫。

[root@master ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mysql        8.0.23    cbe8815cbea8   4 months ago    546MB
nginx        1.17      9beeba249f3e   15 months ago   127MB
#將映象mysql:8.0.23標記為tom-mysql
[root@master ~]# docker tag mysql:8.0.23  tom-mysql

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