在CentOS 7.x中配置Docker私有庫

在公司有時(shí)候去使用Docker Hub公共倉庫可能不太方便,于是我們可以在公司內(nèi)網(wǎng)搭建一個(gè)私有的Docker庫。網(wǎng)上搭建Docker私有庫的方法很多,有借助于Docker Hub的、有直接使用別人創(chuàng)建好的私有庫,本文寫的是使用官方提供的docker-registry來搭建私有庫,這也是最多人使用的一種方法。

0x01 私庫環(huán)境

  • 服務(wù)器
# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 
# uname -r
3.10.0-514.2.2.el7.x86_64
  • Docker版本
# docker -v
Docker version 1.10.3, build 3999ccb-unsupported
  • 關(guān)閉SELINUX
# /usr/sbin/setenforce 0 &>/dev/null && sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

0x02 私庫配置

  1. 獲取官方registry鏡像
# docker pull registry  ##自動(dòng)去官方獲取
# docker images  ##查看是否pull成功,有registry即可
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              182810e6ba8c        8 days ago          37.6 MB
  1. 運(yùn)行registry鏡像
    默認(rèn)倉庫會(huì)被創(chuàng)建在容器的/var/lib/registry目錄下,我們需要用-v參數(shù)將鏡像文件存放在本地指定路徑。
    網(wǎng)上很多文章寫的容器默認(rèn)會(huì)創(chuàng)建在/tmp/registry下,這邊被坑了很久。最后通過查看容器的信息才發(fā)現(xiàn)默認(rèn)路徑在/var/lib/registry目錄下
# docker inspect f6009d3f5b46  
##用docker inspect 跟上容器的ID,就可以查看容器的一些信息,定位到"Mounts",其中"Destination"即是容器默認(rèn)的存放路徑
"Mounts": [
            {
                "Source": "/cache1/registry",
                "Destination": "/var/lib/registry",
                "Mode": "",
                "RW": true,
                "Propagation": "rslave"
            }
        ]
# docker run -d -p 5000:5000 -v /cache1/registry:/var/lib/registry registry  ##運(yùn)行registry容器,端口為5000;并將上傳鏡像存放到本地的/cache1/registry目錄
# docker ps -a  ##查看運(yùn)行的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
f6009d3f5b46        registry            "/entrypoint.sh /etc/"   3 hours ago         Up 3 hours          0.0.0.0:5000->5000/tcp   docker-registry
  1. 訪問私有倉庫
# curl 127.0.0.1:5000/v1/search    ##網(wǎng)上用的這個(gè)命令報(bào)404
404 page not found
后面查了資料發(fā)現(xiàn)是v1版本的api查看方式,我們現(xiàn)在的版本是v2,用下面命令即可
# curl 127.0.0.1:5000/v2/_catalog   
{"repositories":["registry"]}   ##有一個(gè)registry鏡像
  1. 為鏡像打標(biāo)簽
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              182810e6ba8c        8 days ago          37.6 MB
# docker tag registry 127.0.0.1:5000/registry  
# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
registry                  latest              182810e6ba8c        8 days ago          37.6 MB
127.0.0.1:5000/registry   latest              182810e6ba8c        8 days ago          37.6 MB
  1. 上傳鏡像
# docker push 127.0.0.1:5000/registry
The push refers to a repository [127.0.0.1:5000/registry]
96b4f94bc221: Pushed
a05358fe6900: Pushed
e4bdfaa6de6b: Pushed 
c161fb93c3f2: Pushed 
7cbcbac42c44: Pushed
latest: digest: sha256:5501375e0e654bb6b7550cb680c638732b3e54fb79536dd2c1f73c20d1044c93 size: 1342
  1. 查看鏡像存儲(chǔ)目錄
# tree /cache1/registry/docker/registry/v2/repositories
/cache1/registry/docker/registry/v2/repositories
└── registry
    └── _manifests
        ├── revisions
        │   └── sha256
        │       └── 5501375e0e654bb6b7550cb680c638732b3e54fb79536dd2c1f73c20d1044c93
        │           └── link
        └── tags
            └── latest
                ├── current
                │   └── link
                └── index
                    └── sha256
                        └── 5501375e0e654bb6b7550cb680c638732b3e54fb79536dd2c1f73c20d1044c93
                            └── link
11 directories, 3 files

0x03 Q&A

  1. 在pull私有倉庫時(shí)會(huì)遇到tls相關(guān)的問題
    報(bào)錯(cuò)信息類似:
v1 ping attempt failed with error: Get https://xxx.xxx.xxx.xxx:5000/v1/_ping: http: server gave HTTP response to HTTPS client 

根據(jù)提示信息可以大致了解到是和證書有關(guān)系,解決方式也給到了,要么添加額外參數(shù)直接信任,要么直接通過其他反方(比如openssl)生成證書,這里介紹添加參數(shù)來解決這個(gè)報(bào)錯(cuò)。

解決方法:

在CentOS 7.x系統(tǒng)中可以修改/usr/lib/systemd/system/docker.service文件

定位到:
ExecStart=/usr/bin/dockerd
修改為:
ExecStart=/usr/bin/dockerd --insecure-registry x.x.x.x:5000

然后重啟docker,查看docker進(jìn)程

# ps -ef |grep docker
root      2557  2490  0 14:56 pts/0    00:00:00 grep --color=auto docker
root     21530     1  0 Jan04 ?        00:01:33 /usr/bin/dockerd --insecure-registry x.x.x.x:5000   ##x.x.x.x即為你的私庫地址

博客地址:http://yangfannie.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容