Centos 7.x 使用Docker registry鏡像建立私人倉庫

來源:互聯網
上載者:User

有時候使用 Docker Hub 這樣的公用倉庫可能不方便,並且公司的私人鏡像為了業務安全,也不會push到docker hub上,使用者可以建立一個本地倉庫供私人使用。類似於git 和maven一樣,同時節省伺服器下載和上傳鏡像頻寬。

那什麼是docker registry呢

Docker Registry由三個部分組成:index,registry,registry client。

可以把Index認為是負責登入、負責認證、負責儲存鏡像資訊和負責對外顯示的外部實現,而registry則是負責儲存鏡像的內部實現,而Registry Client則是docker用戶端。

我這台伺服器已經安裝docker1.6版本,至於怎麼安裝我就不多說了,可以參考這裡,centos上部署docker

[root@docker data]# docker -v
Docker version 1.6.2, build ba1f6c3/1.6.2
[root@docker data]# uname -r
4.1.2-1.el7.elrepo.x86_64


安裝docker-registry

docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
如果本地沒有下載過docker-registry,則首次會pull registry 運行時會映射路徑和連接埠,以後就可以從/data/registry下找到私人倉庫,這裡查看下我原生鏡像

[root@docker data]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/registry   latest              ddfbba49d0b6        21 hours ago        423.6 MB
docker.io/centos     latest              7322fbe74aa5        3 weeks ago         172.2 MB
從上面資訊可以分別看出

來自於哪個倉庫,比如 centos
鏡像的標記,比如 latest 最後一個版本
它的 識別碼(唯一)
建立時間
鏡像大小
可以看到registry容器已經啟動

[root@docker data]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                    PORTS                    NAMES
ad3469d9302b        registry:latest     "docker-registry"      5 minutes ago       Up 5 minutes              0.0.0.0:5000->5000/tcp   compassionate_newton  
4c86d4e541e3        centos:latest       "/bin/bash"            23 hours ago        Exited (0) 23 hours ago                            high_galileo          
e79a883fdc8b        centos:latest       "/bin/echo 'Hello Wo   23 hours ago        Exited (0) 23 hours ago                            stoic_lalande
訪問私人倉庫

[root@docker data]# curl 127.0.0.1:5000/v1/search
{"num_results": 0, "query": "", "results": []}
因為我們還沒有像私人容器提交鏡像,所以這裡返回空,下面我們提交一個鏡像試試,上面可以看到我本地有一個registry的鏡像

使用docker tag 將我本地的id為7322fb474aa5的這個鏡像標記為 127.0.0.1:5000/centos

命令格式為 docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]


[root@docker data]# docker tag 7322fbe74aa5 127.0.0.1:5000/centos
[root@docker data]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/registry      latest              ddfbba49d0b6        21 hours ago        423.6 MB
docker.io/centos        latest              7322fbe74aa5        3 weeks ago         172.2 MB
127.0.0.1:5000/centos   latest              7322fbe74aa5        3 weeks ago         172.2 MB
[root@docker data]#

鏡像的 ID 唯一標識了鏡像,注意到 docker.io/centos和 127.0.0.1:5000/centos具有相同的鏡像 ID,說明它們實際上是同一鏡像。

PUSH 鏡像

然後我們將這個鏡像push到私人鏡像庫

[root@docker data]# docker push 127.0.0.1:5000/centos
The push refers to a repository [127.0.0.1:5000/centos] (len: 1)
Sending image list
Pushing repository 127.0.0.1:5000/centos (1 tags)
f1b10cd84249: Image successfully pushed
c852f6d61e65: Image successfully pushed
7322fbe74aa5: Image successfully pushed
Pushing tag for rev [7322fbe74aa5] on {http://127.0.0.1:5000/v1/repositories/centos/tags/latest}

然後我麼拿在看下私人倉庫中有沒有鏡像

[root@docker data]# curl 127.0.0.1:5000/v1/search
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/centos"}]}

可以看到一家有個叫centos的鏡像存在了,就是我剛剛上傳的鏡像。然後你的其他伺服器就可以來下載這個鏡像使用了

docker pull 192.168.1.222:5000/centos

如果本地有很多鏡像想批量上傳怎麼辦,可以用這個指令碼

$ wget https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh; sudo chmod a+x push_images.sh
$ ./push_images.sh ubuntu:latest centos:centos7

這裡大家可以看到,訪問我們私人庫的時候,沒有任何許可權控制,也就是說別人知道這個倉庫地址也可以push 和pull鏡像,這樣很不安全,大家可以在網路層面,也可以前面加層nginx,然後nginx反向 Proxy本地的5000連接埠

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.