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

Docker 倉庫

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

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

1. 登入登出

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

docker login

然后輸入賬號(hào)密碼登錄。
圖片描述

使用 docker logout 可以登出賬號(hào)。

2. 搜索鏡像

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

docker search redis

圖片描述

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

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

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

  • 還有一種類型,比如 bitnami/redis鏡像,它是由 Docker 的用戶bitnami創(chuàng)建并維護(hù)的,因此帶有用戶名稱前綴??梢酝ㄟ^前綴 username/ 來指定使用某個(gè)用戶提供的鏡像。

通常我們更青睞官方構(gòu)建的鏡像。

3. 下載鏡像

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

docker pull redis

默認(rèn)會(huì)拉取 latest 版本,如果要指定版本,需要在鏡像后標(biāo)記版本,如 dockre pull redis:3.2
運(yùn)行這個(gè)命令docker pull redis后,Docker 就會(huì)開始從鏡像倉庫中拉取我們所指定的鏡像了。

圖片描述

如上圖所示,redis 的鏡像已經(jīng)被下載成功了。

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

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

4. 上傳鏡像

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

docker push <本地鏡像名>

5. 刪除鏡像

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

6. 搭建Docker 私有倉庫

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

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

Tips:
此命令會(huì)啟動(dòng)一個(gè)容器,設(shè)定本地的 /root/registry 目錄存儲(chǔ)上傳的鏡像。

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

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

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

測試私有鏡像倉庫

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

# 將redis:latest鏡像名稱改為127.0.0.1:6000/myredis:v1
# 127.0.0.1:6000/xxx是固定寫法,與之前的地址對(duì)應(yīng)
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

得到結(jié)果

{"repositories":["myredis"]}

說明上傳成功。

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

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

運(yùn)行docker images可以看到此鏡像已經(jīng)被緩存到本地了。

7. 小結(jié)

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