使用registry搭建docker私服倉庫


默認情況下,我們拉取docker鏡像大多都是從 dockerhub 上拉取的,但有些時候有些鏡像是我們自己內部構建的,不想公開給別人使用,那麼這個時候就需要構建一個自己的鏡像私服了,而 docker 正好提供了,registry鏡像,正好可以用來構建自己的私服。

一、拉取 registry鏡像

docker pull registry

二、根據鏡像啓動一個容器

1、創建一個數據卷

docker volume create registry-huan

2、啓動容器

docker run -d -p 5000:5000 --restart=always -v registry-huan:/var/lib/registry --name registry-huan registry
  • -p 5000:5000將容器內部的5000端口暴露給外部的5000端口
  • --restart=always 表示遇到錯誤自動重啓
  • --name 執行啓動後容器的名字
  • -v registry-huan:/var/lib/registry表示將容器內部的數據掛載到自己的數據卷registry-huan

三、隨機訪問一個私服的接口,看是否可以返回數據

http://47.101.130.164:5000/v2/_catalog

返回數據
注意: 這個 repositories 中之所以會存在數據,是因爲我之前上傳一個 hello-world 的鏡像

四、推送一個鏡像到自己的私服中

1、拉取一個 hello-world 鏡像

docker pull hello-world

2、給這個鏡像打一個 tag

docker tag hello-world  47.101.130.164:5000/hello-world

注意:
1、47.101.130.164 這個爲我 registry 所在的機器的ip地址
2、5000 爲啓動 registry 對外暴露的端口

3、推送鏡像到自己的私服中

docker push 47.101.130.164:5000/hello-world
  • 在這一步可能會報如下錯誤
    push 報錯
  • 解決方案如下
描述 操作
1、在 vim /usr/lib/systemd/system/docker.service文件中增加如下配置 修改配置文件 --insecure-registry 47.101.130.164:5000
2、重新啓動docker systemctl daemon-reload
systemctl restart docker.service
3、再次執行 docker push xxx 就會發現可以推送了

4、從私服中拉取鏡像

docker pull 47.101.130.164:5000/hello-world-new

拉取鏡像

五、注意事項

1、如果要推送到自己的私服中,那麼在給鏡像打tag時需要以 ip[域名]:端口 作爲前綴

2、如果推送鏡像失敗,可能需要修改 /usr/lib/systemd/system/docker.service 配置文件

3、47.101.130.164 爲我docker registry 所在的服務器的地址

4、本地操作使用docker的版本爲 19.03.1

[root@huan1993 ~]# docker -v
Docker version 19.03.1, build 74b1e89
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章