第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Docker 倉庫

本節(jié)介紹鏡像倉庫的使用。

目前 Docker 官方維護了一個公共倉庫 Docker Hub,這是一個用于管理公共鏡像的地方,我們可以找到各種鏡像,也可以把我們自己的鏡像推送上去。
當然,根據需要我們也可以搭建私有的鏡像倉庫,用于管理自己的鏡像。

1. 登入登出

如果沒有賬號,我們需要在 Docker Hub 上免費注冊一個 Docker 賬號。保存好賬號密碼,進入 Linux 環(huán)境,輸入:

docker login

然后輸入賬號密碼登錄。
圖片描述

使用 docker logout 可以登出賬號。

2. 搜索鏡像

我們可以用 docker search 這個命令搜索 Docker Hub 中的鏡像。
比如我們搜索一下redis的鏡像

docker search redis

圖片描述

可以看到返回了很多包含 redis 關鍵字的信息,返回的信息中從左到右依次是:
鏡像名字、描述、star關注數、是否官方創(chuàng)建、是否自動創(chuàng)建。

根據是否是官方提供,可將鏡像資源分為兩類:

  • 一種是類似 centos 這樣的鏡像,被稱為基礎鏡像或根鏡像。這些基礎鏡像由 Docker 公司創(chuàng)建、驗證、支持、提供。這樣的鏡像往往使用單個單詞作為名字;

  • 還有一種類型,比如 bitnami/redis鏡像,它是由 Docker 的用戶bitnami創(chuàng)建并維護的,因此帶有用戶名稱前綴。可以通過前綴 username/ 來指定使用某個用戶提供的鏡像。

通常我們更青睞官方構建的鏡像。

3. 下載鏡像

我們演示一下如何下載 redis 鏡像:

docker pull redis

默認會拉取 latest 版本,如果要指定版本,需要在鏡像后標記版本,如 dockre pull redis:3.2
運行這個命令docker pull redis后,Docker 就會開始從鏡像倉庫中拉取我們所指定的鏡像了。

圖片描述

如上圖所示,redis 的鏡像已經被下載成功了。

在控制臺中,我們可以看到鏡像拉取的進度。 下載進度會分為幾行,每一行代表的就是一個鏡像層。 Docker 首先會拉取鏡像所基于的所有鏡像層,之后再單獨拉取每一個鏡像層并組合成這個鏡像。如果在本地已經存在相同的鏡像層,那么 Docker 就直接略過這個鏡像層的拉取而直接采用本地的內容。

鏡像在被拉取之后就存放到了本地,接受 Docker 管理,我們可以通過 docker images 命令看到它們。
圖片描述

4. 上傳鏡像

Docker hub用戶賬戶登錄后,通過 docker push 命令,把自己創(chuàng)建的鏡像上傳到倉庫中來共享.

docker push <本地鏡像名>

5. 刪除鏡像

刪除鏡像的命令是 docker image rm,參數是鏡像的名稱或 ID
使用命令docker image rm redis:latest可以刪除剛才拉取的 redis 鏡像,同時Docker 會自動刪掉無用、沒有依賴的鏡像層。

6. 搭建Docker 私有倉庫

執(zhí)行以下命令,使用Docker運行私有倉庫服務registry。

docker run -d -v /root/registry:/var/lib/registry -p 6000:5000 --restart=always --name registry registry

Tips:
此命令會啟動一個容器,設定本地的 /root/registry 目錄存儲上傳的鏡像。

配置/etc/docker/daemon.json,添加一行insecure-registries配置

{
...
    "insecure-registries": ["127.0.0.1:6000"]
...
}

127.0.0.1:6000是我們上面的自定義鏡像倉庫服務的地址端口。

測試私有鏡像倉庫

下面我們將redis:latest鏡像改個名字,傳到私有倉庫。

# 將redis:latest鏡像名稱改為127.0.0.1:6000/myredis:v1
# 127.0.0.1:6000/xxx是固定寫法,與之前的地址對應
docker tag redis:latest 127.0.0.1:6000/myredis:v1
# 上傳到私有倉庫
docker push 127.0.0.1:6000/myredis:v1
# 查看私有倉庫中的鏡像
curl http://127.0.0.1:6000/v2/_catalog

得到結果

{"repositories":["myredis"]}

說明上傳成功。

接下來,我們將本地的127.0.0.1:6000/myredis:v1刪除,嘗試從私有倉庫中拉去

# 刪除鏡像
docker rmi 127.0.0.1:6000/myredis:v1
# 把redis鏡像也刪除掉,這樣可以清理掉相關的緩存層,使后面鏡像的下載過程和結果更清楚
docker rmi redis
# 拉取鏡像
docker pull 127.0.0.1:6000/myredis:v1

運行docker images可以看到此鏡像已經被緩存到本地了。

7. 小結

容器鏡像的操作是增量式的,每次鏡像拉取的內容會比原本多個完整的操作系統(tǒng)的小很多,同時鏡像只要發(fā)布成功,我們就能完全復現這個鏡像的完整環(huán)境,這樣就使得基于容器鏡像的團隊協(xié)作更加便捷。