部署私有鏡像倉庫 Registry

Docker Registry 是 Docker 容器鏡像的存儲(chǔ)和分發(fā)服務(wù)叼架,允許用戶存儲(chǔ)和管理 Docker 鏡像缩赛。它可以是公共的秽五,如 Docker Hub堡纬,也可以是私有的聂受,如自建的 Docker Registry。
Registry是一個(gè)非常簡單的輕量級(jí)本地私有倉庫烤镐,由于該鏡像倉庫比較單一蛋济,實(shí)際生產(chǎn)環(huán)境很少有公司使用。

一炮叶、安裝 Docker

# 安裝 yum 工具集
yum install -y yum-utils
# 添加阿里云docker-ce倉庫
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安裝docker-ce(社區(qū)版)軟件包
yum -y install docker-ce
# 啟用Docker Cgroup用于限制進(jìn)程的資源使用量碗旅,如CPU、內(nèi)存資源
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
        "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 啟動(dòng)docker并設(shè)置隨機(jī)自啟
systemctl enable docker ; systemctl start docker

二镜悉、部署 Registry

# 拉取私有鏡像倉庫到本地
docker pull registry

# 啟動(dòng)私有鏡像倉庫
docker run -d -p 5000:5000 --restart=always --name registry registry:latest

這里的參數(shù)解釋:
-d: 后臺(tái)運(yùn)行容器祟辟。
-p 5000:5000: 將容器的 5000 端口映射到主機(jī)的 5000 端口,這是 Registry 默認(rèn)的監(jiān)聽端口侣肄。
--restart=always: 設(shè)置容器自動(dòng)重啟旧困,以確保即使系統(tǒng)重啟或者 Docker 服務(wù)重啟后,Registry 也能自動(dòng)重新啟動(dòng)稼锅。
--name registry: 為容器指定一個(gè)名稱叮喳,這里命名為 registry。
registry:latest: 使用 Docker Hub 上的 registry 鏡像缰贝, latest表示使用的是 Registry 的版本 馍悟。

啟動(dòng)后,瀏覽器直接訪問http://IP:5000端口剩晴,訪問不到任何內(nèi)容锣咒,正確的訪問方式:http://IP:5000/v2/_catalog
看到 {"repositories":[]}侵状,說明 docker registry 已經(jīng)部署成功,只是倉庫中還沒有存儲(chǔ)鏡像

# 編輯docker配置文件
需要配置 /etc/docker/daemon.json
添加
 "insecure-registries": ["192.168.1.101:5000"]
注:配置信息除最后一行外毅整,每行末尾都有一個(gè)英文的逗號(hào)趣兄,
默認(rèn)情況下,Docker 只允許使用 HTTPS 協(xié)議(安全連接)來拉取和推送鏡像悼嫉。
如果需要在 Docker 中訪問一個(gè)沒有啟用 HTTPS 的私有鏡像倉庫艇潭,
可以通過在 daemon.json 中添加 insecure-registries 字段來指定允許使用不安全的 HTTP 連接訪問的鏡像倉庫。
systemctl daemon-reload   # 重載配置文件
systemctl restart docker  # 重啟docker

如果是在當(dāng)前部署 registry 的機(jī)器上戏蔑,可以拉取 nginx 測試上傳到 registry
docker pull nginx:latest
# 查看已有鏡像
docker images 
# 給 nginx 鏡像打標(biāo)簽
docker tag nginx:latest 192.168.1.100:5000/mynginx:1.0
# 查看是否標(biāo)記成功
docker images
# 上傳鏡像到私有倉庫
docker push 192.168.1.100:5000/mynginx:1.0

http://192.168.1.100:5000/v2/_catalog
看到 {"repositories":["mynginx"]}蹋凝,說明鏡像已經(jīng)成功上傳到 docker registry 私有倉庫中。 

docker tag

docker tag 命令用于給本地的一個(gè)鏡像打上新的標(biāo)簽总棵,這個(gè)標(biāo)簽可以是另一個(gè)鏡像名稱和標(biāo)簽的組合鳍寂,或者只是一個(gè)新的標(biāo)簽。

docker tag SOURCE_IMAGE[:TAG] repository_name/TARGET_IMAGE[:TAG]

示例:
docker tag nginx:latest 192.168.1.100:5000/mynginx:1.0

參數(shù)解釋:
SOURCE_IMAGE[:TAG]:要標(biāo)記的本地鏡像情龄∑矗可以包含標(biāo)簽(TAG),如果沒有指定標(biāo)簽骤视,默認(rèn)為 latest鞍爱。
TARGET_IMAGE[:TAG]:新標(biāo)記的目標(biāo)鏡像∽ㄐ铮可以包含標(biāo)簽(TAG)睹逃,如果沒有指定標(biāo)簽,默認(rèn)為 latest笼裳。
repository_name:私有鏡像倉庫地址

docker push

docker push repository_name/IMAGE[:TAG]

示例:
docker push 192.168.1.100:5000/mynginx:1.0

三唯卖、部署 docker-registry-web

docker-registry-web 是一個(gè)開源項(xiàng)目,它提供了一個(gè)簡單的 Web 界面來管理和瀏覽 Docker Registry 中的鏡像躬柬。

# 拉取docker-registry-web鏡像
docker pull hyper/docker-registry-web

docker run -it -d --name registry-web \
  -e REGISTRY_URL=http://192.168.1.100:5000/v2 \
  -e REGISTRY_NAME=192.168.1.100:5000 \
  -p 8000:8080 \
  hyper/docker-registry-web 

參數(shù)解釋:
1拜轨、docker run:
這是 Docker 命令,用于運(yùn)行一個(gè)新的容器允青。
2橄碾、-it:
-i 表示交互模式(interactive),允許你在容器中進(jìn)行交互颠锉。
-t 表示分配一個(gè)偽終端(pseudo-TTY)法牲,通常與 -i 一起使用以便交互式操作。
在這個(gè)具體的命令中琼掠,-it 用于保持容器在前臺(tái)運(yùn)行拒垃,并能夠在控制臺(tái)上查看容器的輸出和日志。
3瓷蛙、-d:
表示以后臺(tái)(detached)模式運(yùn)行容器悼瓮,即使不指定 -it 也可以使容器在后臺(tái)運(yùn)行戈毒。
--name registry-web:
指定容器的名稱為 registry-web,這樣在后續(xù)的操作中可以通過這個(gè)名稱來引用這個(gè)容器横堡。
4埋市、-e REGISTRY_URL=http://192.168.1.100:5000/v2:
設(shè)置環(huán)境變量 REGISTRY_URL,指定了要連接的 Docker Registry 的 URL命贴。
在這個(gè)例子中道宅,http://192.168.1.100:5000/v2 是 Docker Registry 的地址,后面的 /v2 表示 Docker Registry API 的版本胸蛛。
5污茵、-e REGISTRY_NAME=192.168.1.100:5000:
設(shè)置環(huán)境變量 REGISTRY_NAME,用于在 docker-registry-web 的界面上顯示 Registry 的名稱胚泌。
在這里省咨,192.168.1.100:5000 是注冊表的名稱肃弟,將顯示在 docker-registry-web 界面上玷室,以便用戶能夠識(shí)別所連接的 Registry。
6笤受、-p 8000:8080:
將容器的 8080 端口映射到宿主機(jī)的 8000 端口穷缤,允許通過 8000 端口訪問 docker-registry-web 提供的 Web 界面。
這里宿主機(jī)上的 8000 端口是供外部訪問用的箩兽,可以根據(jù)需要調(diào)整映射的端口號(hào)津肛。
7、hyper/docker-registry-web:
指定要運(yùn)行的 Docker 鏡像汗贫,這里是 hyper/docker-registry-web身坐,是 docker-registry-web 的鏡像名稱和標(biāo)簽(版本)。

# 訪問 http://192.168.1.100:8000/落包,可以看到Docker Registry中存儲(chǔ)的鏡像信息

docker-registry-web 連接基于 HTTPS 的 Docker Registry

??
docker run -d -p 8000:8080 --name registry-web \
  -e REGISTRY_URL=https://tt.dd.com:5000/v2 \
  -e REGISTRY_NAME=192.168.1.100:5000 \
  -e REGISTRY_STORAGE_DELETE_ENABLED=true \
  -e REGISTRY_BASIC_AUTH="YWRtaW46MTIzNDU2" \
  -v /securitit/registry/certs:/certs \
  -e DOCKER_REGISTRY_WEB_HTTPS_KEY=/certs/domain.key \
  -e DOCKER_REGISTRY_WEB_HTTPS_CERTIFICATE=/certs/domain.pem \
  hyper/docker-registry-web

# master 節(jié)點(diǎn)創(chuàng)建docker registry secret
kubectl create secret docker-registry tt \
  --docker-server=tt.dd.com:5000 \
  --docker-username=admin \
  --docker-password=123456 \
  --docker-email=jcn@example.com

# 刪除 secret
kubectl delete secret tt

四部蛇、 Registry配置 https 服務(wù)

 1、確認(rèn)目錄存在并創(chuàng)建
mkdir -p /securitit/registry/auth
2咐蝇、使用 htpasswd 生成文件
sudo yum install httpd-tools -y
htpasswd -Bbn admin 123456 > /securitit/registry/auth/htpasswd
3涯鲁、 確認(rèn)文件生成
執(zhí)行完上述命令后,使用以下命令確認(rèn) htpasswd 文件已經(jīng)成功生成并包含正確的賬號(hào)密碼:
cat /securitit/registry/auth/htpasswd
如果能夠看到類似以下內(nèi)容有序,表示文件已經(jīng)成功創(chuàng)建:
admin:$2y$05$aQ2Pq/X.vzii61OzzE1oaOasjiH90f0SDjAPNrPIc3TvfoRxkI6eu

4抹腿、使用registry鏡像啟動(dòng)容器,同時(shí)啟用基于HTTP BASIC認(rèn)證
docker run -d -p 5000:5000 --restart=always --name registry \
  -v /securitit/registry/auth:/auth \
  -v /securitit/registry/certs:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \
  -e REGISTRY_AUTH=htpasswd \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  registry:latest

5旭寿、訪問 https://IP:5000/v2/_catalog警绩,輸入設(shè)置的用戶名(admin)和密碼(123456)后,可正常訪問盅称。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肩祥,一起剝皮案震驚了整個(gè)濱河市僚匆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搭幻,老刑警劉巖咧擂,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異檀蹋,居然都是意外死亡松申,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門俯逾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贸桶,“玉大人,你說我怎么就攤上這事桌肴』噬福” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵坠七,是天一觀的道長水醋。 經(jīng)常有香客問我,道長彪置,這世上最難降的妖魔是什么拄踪? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮拳魁,結(jié)果婚禮上惶桐,老公的妹妹穿的比我還像新娘。我一直安慰自己潘懊,他們只是感情好姚糊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著授舟,像睡著了一般救恨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岂却,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天忿薇,我揣著相機(jī)與錄音,去河邊找鬼躏哩。 笑死署浩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扫尺。 我是一名探鬼主播筋栋,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼正驻!你這毒婦竟也來了弊攘?” 一聲冷哼從身側(cè)響起抢腐,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎襟交,沒想到半個(gè)月后迈倍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捣域,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年啼染,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片焕梅。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迹鹅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贞言,到底是詐尸還是另有隱情斜棚,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布该窗,位于F島的核電站弟蚀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挪捕。R本人自食惡果不足惜粗梭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一争便、第九天 我趴在偏房一處隱蔽的房頂上張望级零。 院中可真熱鬧,春花似錦滞乙、人聲如沸奏纪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽序调。三九已至,卻和暖如春兔簇,著一層夾襖步出監(jiān)牢的瞬間发绢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工垄琐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留边酒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓狸窘,卻偏偏與公主長得像墩朦,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翻擒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容