日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 1. 鏡像簡介
  • 2. 獲取鏡像
  • 3. 查看鏡像信息
  • 4. 搜索鏡像
  • 5. 創(chuàng)建鏡像
    • 5.1 基于已有鏡像創(chuàng)建
    • 5.2 使用Dockerfile 新建鏡像
  • 6. 刪除鏡像

    1. 鏡像簡介

    Docker 鏡像(Image)是用于創(chuàng)建 Docker 容器的模板。Docker 鏡像相當(dāng)于一個 root 文件系統(tǒng),比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)。在實際使用中,它包含運(yùn)行某個軟件所需的所有內(nèi)容,我們把應(yīng)用程序和配置依賴打包好形成一個可交付的運(yùn)行環(huán)境(包括代碼、運(yùn)行時需要的庫、環(huán)境變量和配置文件等),這個打包好的運(yùn)行環(huán)境就是image鏡像文件。

    Docker超詳細(xì)講解鏡像操作

    鏡像倉庫服務(wù)(Image Registry)包含多個鏡像倉庫(Image Repository),一個鏡像倉庫中可以包含多個鏡像。

    對于用戶來說,鏡像操作一般是指docker的客戶端操作,包括鏡像獲取,創(chuàng)建,修改,運(yùn)行,刪除,搜索,查看等一系列操作。docker最重要的操作命令是docker build,docker pull和docker run。

    2. 獲取鏡像

    Docker使用鏡像倉庫來集中存放Docker鏡像,如同代碼庫一樣,我們可以自建私有Registry和使用公用Registry。

    通常在倉庫中存放有多個鏡像,而每個倉庫可以包含多個標(biāo)簽(Tag),每個標(biāo)簽對應(yīng)著一個鏡像。我們可以通過<倉庫名>:<標(biāo)簽>的格式來指定具體是哪個軟件哪個版本的鏡像,如果不給出標(biāo)簽,將以 Latest 作為默認(rèn)標(biāo)簽。

    通過docker pull命令可以從倉庫下載鏡像,其完整格式為:

    docker pull [OPTIONS] NAME[:TAG]

    OPTIONS:

    -a:–all-tags=true|false: 是否獲取倉庫中的所有鏡像,默認(rèn)為否

    –disable-content-trust:忽略鏡像的校驗,默認(rèn)開啟

    NAME:鏡像倉庫名(用來區(qū)分鏡像)

    TAG:鏡像標(biāo)簽(通常表示軟件版本信息)

    對于Docker鏡像來說, 如果不顯式指定TAG, 則默認(rèn)會選擇latest標(biāo)簽,此時會下載倉庫中最新版本的鏡像。

    一般來說, 鏡像的latest 標(biāo)簽意味著該鏡像的內(nèi)容會跟蹤最新版本的變更而變化, 內(nèi)容是不穩(wěn)定的。因此,如果需要從穩(wěn)定性上考慮,則不要在生產(chǎn)環(huán)境中忽略鏡像的TAG使用默認(rèn)的latest 來標(biāo)記鏡像。

    可以直接從官方Docker Hub 鏡像源來下載鏡像,例如:

    $ docker pull ubuntu:16.04
    16.04: Pulling from library/ubuntu
    58690f9b18fc: Pull complete 
    b51569e7c507: Pull complete 
    da8ef40b9eca: Pull complete 
    fb15d46c38dc: Pull complete 
    Digest: sha256:0f71fa8d4d2d4292c3c617fda2b36f6dabe5c8b6e34c3dc5b0d17d4e704bd39c
    Status: Downloaded newer image for ubuntu:16.04
    docker.io/library/ubuntu:16.04

    如果從非官方的倉庫下載,則需要在倉庫名稱前指定完整的倉庫地址,例如:

    $ docker pull hub.c.163.com/public/ubuntu:16.04

    另外,有時需要使用鏡像代理服務(wù)來加速Docker 鏡像獲取 過程 ,在前面《Docker安裝及加速》一文中已經(jīng)講述。

    3. 查看鏡像信息

    使用docker images或docker image ls命令可以列出本地主機(jī)上已有鏡像的基本信息。

    $ docker image ls
    REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
    ubuntu        18.04     5a214d77f5d7   10 months ago   63.1MB
    hello-world   latest    feb5d9fea6a5   10 months ago   13.3kB
    ubuntu        16.04     b6f507652425   11 months ago   135MB
    

    參數(shù)說明:

    • REPOSITORY:鏡像倉庫,比如ubuntu表示ubuntu系列的基礎(chǔ)鏡像;
    • TAG:鏡像標(biāo)簽,比如 18.04是以ubuntu版本號作為了鏡像標(biāo)簽;
    • IMAGE ID:鏡像ID,每個鏡像的ID事唯一的,如果兩個鏡像的ID相同,說明它們實際上指向了同一個鏡像,只是具有不同標(biāo)簽名稱而已;
    • CREATED:創(chuàng)建時間,顯示的是鏡像最后更新時間;
    • SIZE:鏡像大小。

    使用docker inspect命令獲取鏡像的詳細(xì)信息,其中,包括創(chuàng)建者,各層的數(shù)字摘要等,其格式為:

    docker inspect [IMAGE_NAME|ID

    例如:

    $ docker inspect ubuntu:18.04
    [
        {
            "Id": "sha256:5a214d77f5d747e6ed81632310baa6190301feeb875cf6bf9da560108fa09972",
            "RepoTags": [
                "ubuntu:18.04"
            ],
            "RepoDigests": [
                "ubuntu@sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79dbbacddd7d6"
            ],
            "Parent": "",
            "Comment": "",
            "Created": "2021-10-01T02:23:24.179667784Z",
            "Container": "20d614d2eca1b5a9ad6d5a56a80efce44096b87ca76a98256eb51f8dbaf7a8d2",
            "ContainerConfig": {
                "Hostname": "20d614d2eca1",
                ......

    4. 搜索鏡像

    使用 docker search 命令可以搜索Docker Hub 官方倉庫中的鏡像,顯示信息包括鏡像名字、描述、收藏數(shù)、是否官方創(chuàng)建、是否自動創(chuàng)建等,命令格式為:

    docker search [option] keyword

    option選項主要包括:

    • -f,–filter filter: 過濾輸出內(nèi)容;
    • –format string: 格式化輸出內(nèi)容;
    • –limit int:限制輸出結(jié)果個數(shù), 默認(rèn)為 25 個;
    • –automated :只列出 automated build類型的鏡像;
    • –no-trunc :顯示完整的鏡像描述.

    例如從官方庫中搜索mysql相關(guān)鏡像:

    $ docker search -f stars=10 mysql
    NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    mysql                         MySQL is a widely used, open-source relation…   12976     [OK]       
    mariadb                       MariaDB Server is a high performing open sou…   4972      [OK]       
    phpmyadmin                    phpMyAdmin - A web interface for MySQL and M…   594       [OK]       
    percona                       Percona Server is a fork of the MySQL relati…   583       [OK]       
    bitnami/mysql                 Bitnami MySQL Docker Image                      72                   [OK]
    linuxserver/mysql-workbench                                                   40                   
    ubuntu/mysql                  MySQL open source fast, stable, multi-thread…   36                   
    linuxserver/mysql             A Mysql container, brought to you by LinuxSe…   36                   
    circleci/mysql                MySQL is a widely used, open-source relation…   26                   
    google/mysql                  MySQL server for Google Compute Engine          21                   [OK]
    rapidfort/mysql               RapidFort optimized, hardened image for MySQL   13     

    參數(shù)說明:

    • NAME: 鏡像倉庫源的名稱
    • DESCRIPTION: 鏡像的描述
    • OFFICIAL: 是否 docker 官方發(fā)布
    • stars: 類似 Github 里面的 star,表示點(diǎn)贊、喜歡的意思。
    • AUTOMATED: 自動構(gòu)建。

    5. 創(chuàng)建鏡像

    鏡像的來源有兩種,其一是從鏡像庫下載鏡像,其二是我們創(chuàng)建一個新的鏡像。創(chuàng)建鏡像也分為兩種,其一是基于已有鏡像創(chuàng)建,其二是使用 Dockerfile 來創(chuàng)建一個新的鏡像。

    5.1 基于已有鏡像創(chuàng)建

    首先,我們需要使用鏡像來創(chuàng)建一個容器,以運(yùn)行目標(biāo)鏡像,并在容器內(nèi)創(chuàng)建一個測試文件test.txt。在完成操作之后,輸入 exit 命令來退出這個容器。

    $ docker run -t -i ubuntu:18.04 /bin/bash
    root@49152c044299:/# touch test.txt
    root@49152c044299:/# exit
    

    此時 ID 為 49152c044299 的容器,就是我們完成更改的容器,可以通過命令 docker commit 來提交容器副本。

    $ docker container commit -m "add test.txt" -a "testdocker" 49152c044299 testdocker/ubuntu:test
    sha256:9c44392a137352f2b22acbe322543eb6f30970b9bd2edf9145d19c28d5fe21fc
    

    參數(shù)說明:

    • -m: 提交的描述信息
    • -a: 指定鏡像作者
    • 49152c044299:容器 ID
    • testdocker/ubuntu:test : 指定要創(chuàng)建的目標(biāo)鏡像名

    我們可以使用 docker image ls命令來查看我們的新鏡像 testdocker/ubuntu:test:

    $ docker image ls
    REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
    testdocker/ubuntu   test      9c44392a1373   19 seconds ago   63.1MB
    ubuntu              18.04     5a214d77f5d7   10 months ago    63.1MB
    hello-world         latest    feb5d9fea6a5   10 months ago    13.3kB
    ubuntu              16.04     b6f507652425   11 months ago    135MB

    5.2 使用Dockerfile 新建鏡像

    使用命令 docker build 可以從零開始創(chuàng)建一個新的鏡像。為此,我們需要創(chuàng)建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構(gòu)建鏡像。

    Docker超詳細(xì)講解鏡像操作

    首先使用vim編寫一個Dockerfile文件:

    FROM ubuntu:18.04
    MAINTAINER test <[email protected]>
    WORKDIR /home
    RUN touch testImage.txt
    EXPOSE 80

    內(nèi)部指令:

    • FROM:指定使用哪個鏡像源
    • RUN :告訴docker 在鏡像內(nèi)執(zhí)行什么命令

    然后,使用 Dockerfile 文件,通過 docker build 命令來構(gòu)建一個鏡像:

    $ docker build -t testimage/ubuntu:testimage1 .
    Sending build context to Docker daemon  2.048kB
    Step 1/5 : FROM ubuntu:18.04
     ---> 5a214d77f5d7
    Step 2/5 : MAINTAINER test <[email protected]>
     ---> Running in 92f0afdaf3bf
    Removing intermediate container 92f0afdaf3bf
     ---> 88d4b9bc0c0e
    Step 3/5 : WORKDIR /home
     ---> Running in ec9fd2b1cbcc
    Removing intermediate container ec9fd2b1cbcc
     ---> 6a91a52c5589
    Step 4/5 : RUN touch testImage.txt
     ---> Running in d60d6a8de1db
    Removing intermediate container d60d6a8de1db
     ---> 1a7c4f1cd570
    Step 5/5 : EXPOSE 80
     ---> Running in 7c2922e1bb55
    Removing intermediate container 7c2922e1bb55
     ---> f3fdbec0b0f9
    Successfully built f3fdbec0b0f9
    Successfully tagged testimage/ubuntu:testimage1

    參數(shù)說明:

    • -t :指定要創(chuàng)建的目標(biāo)鏡像名
    • . :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑

    使用docker images 查看創(chuàng)建的鏡像已經(jīng)在列表中存在,鏡像ID為f3fdbec0b0f9:

    $ docker image ls
    REPOSITORY          TAG          IMAGE ID       CREATED          SIZE
    testimage/ubuntu    testimage1   f3fdbec0b0f9   38 seconds ago   63.1MB
    testdocker/ubuntu   test         9c44392a1373   45 minutes ago   63.1MB
    ubuntu              18.04        5a214d77f5d7   10 months ago    63.1MB
    hello-world         latest       feb5d9fea6a5   10 months ago    13.3kB
    ubuntu              16.04        b6f507652425   11 months ago    135MB
    

    運(yùn)行新的鏡像,可以看到/home目錄下已經(jīng)創(chuàng)建了測試文件testImage.txt:

    $ docker run -t -i testimage/ubuntu:testimage1 /bin/bash
    root@952d273dc630:/home# ls
    testImage.txt
    

    6. 刪除鏡像

    當(dāng)我們不再需要某個鏡像的時候,可以通過 docker image rm 或者docker rmi 命令從 Docker 主機(jī)刪除該鏡像。其格式為:

    docker rmi [image]

    docker image rm [image]

    刪除操作會在當(dāng)前主機(jī)上刪除該鏡像以及相關(guān)的鏡像層。這意味著無法通過 docker image ls 命令看到刪除后的鏡像,并且對應(yīng)的包含鏡像層數(shù)據(jù)的目錄會被刪除。但是,如果某個鏡像層被多個鏡像共享,那只有當(dāng)全部依賴該鏡像層的鏡像都被刪除后,該鏡像層才會被刪除。

    例如,刪除掉前面創(chuàng)建的測試鏡像testimage/ubuntu:testimage1:

    $ docker rmi testimage/ubuntu:testimage1
    Untagged: testimage/ubuntu:testimage1
    Deleted: sha256:f3fdbec0b0f96a8f3bb2e6a4b07ba04dc45b9c59618c2b376ebea7b68ed53971
    Deleted: sha256:1a7c4f1cd57038116b7a5eff05a323fc244a135741c2fd69ad89f21569f00afb
    Deleted: sha256:22997b7cad7e4294d4eb9b02bc475e2bcc94c2dd168b8a8499adb02cfc4cb573
    Deleted: sha256:6a91a52c5589c29f6439bf6c7def37942037a5346a2fd8520f3d8a1fc3d49ccb
    Deleted: sha256:88d4b9bc0c0ee678efad3b8192d3c0cf017dfae142dbc7e87af4fecaafb4f847
    

    刪除完成后,docker image ls查看一下當(dāng)前鏡像列表,可以看到testimage/ubuntu:testimage1已不在列表內(nèi):

    $ docker image ls
    REPOSITORY          TAG       IMAGE ID       CREATED             SIZE
    testdocker/ubuntu   test      9c44392a1373   About an hour ago   63.1MB
    ubuntu              18.04     5a214d77f5d7   10 months ago       63.1MB
    hello-world         latest    feb5d9fea6a5   10 months ago       13.3kB
    ubuntu              16.04     b6f507652425   11 months ago       135MB
    

    如果被刪除的鏡像上存在運(yùn)行狀態(tài)的容器,那么刪除操作不會被允許。再次執(zhí)行刪除鏡像命令之前,需要停止并刪除該鏡像相關(guān)的全部容器。例如刪除時遇到如下錯誤:

    $ docker rmi testimage/ubuntu:testimage1
    Error response from daemon: conflict: unable to remove repository reference "testimage/ubuntu:testimage1" (must force) - container 952d273dc630 is using its referenced image f3fdbec0b0f9
    

    可以先使用docker ps -a查看依賴的容器id,然后docker rm [容器ID]刪除容器后,最后執(zhí)行docker rmi [鏡像名]來刪除鏡像。

    分享到:
    標(biāo)簽:操作 服務(wù)器 講解 詳細(xì) 鏡像
    用戶無頭像

    網(wǎng)友整理

    注冊時間:

    網(wǎng)站:5 個   小程序:0 個  文章:12 篇

    • 51998

      網(wǎng)站

    • 12

      小程序

    • 1030137

      文章

    • 747

      會員

    趕快注冊賬號,推廣您的網(wǎng)站吧!
    最新入駐小程序

    數(shù)獨(dú)大挑戰(zhàn)2018-06-03

    數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

    答題星2018-06-03

    您可以通過答題星輕松地創(chuàng)建試卷

    全階人生考試2018-06-03

    各種考試題,題庫,初中,高中,大學(xué)四六

    運(yùn)動步數(shù)有氧達(dá)人2018-06-03

    記錄運(yùn)動步數(shù),積累氧氣值。還可偷

    每日養(yǎng)生app2018-06-03

    每日養(yǎng)生,天天健康

    體育訓(xùn)練成績評定2018-06-03

    通用課目體育訓(xùn)練成績評定