天天看點

Docker部署私有倉庫

今天和大家聊聊Docker的私有倉庫。

前段時間啊在CentOS6.x上玩Docker的私有倉庫,由于https認證的原因,一直沒有能解決,最後聽群上的一朋友說,換成CentOS 7試試,也别說,最後實驗成功啦!

是以我建議朋友在玩docker的私有倉庫的時候,也能現在CentOS7.x系統上玩,确定對整個過程熟悉後,然後換成你熟悉的6.x的系統,這樣也是一個循循漸進的過程吧!

一、準備

1、位址規劃

1

2

<code>Docker私有倉庫位址:192.168.0.109</code>

<code>Docker用戶端位址:192.168.0.110</code>

2、激活網卡

3

4

<code># vim /etc/sysconfig/network-scripts/ifcfg-eno16777728</code>

<code>修改此行</code>

<code>ONBOOT=</code><code>yes</code>

<code># /etc/init.d/network restart</code>

3、關閉本地防火牆并設定開機不自啟動

<code># systemctl stop firewalld.service</code>

<code># systemctl disable firewalld.service</code>

4、關閉本地selinux防火牆

<code># vi /etc/sysconfig/selinux </code>

<code>SELINUX=disabled</code>

<code># setenforce 0   </code>

5、安裝ifconfig工具

<code># yum install net-tools</code>

二、安裝

1、安裝docker

<code># yum install docker</code>

<code># yum upgrade device-mapper-libs</code>

<code># service docker start</code>

<code># chkconfig docker on</code>

2、本地私有倉庫registry

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>[root@localhost ~]</code><code># docker pull registry</code>

<code>Trying to pull repository docker.io</code><code>/registry</code> <code>...</code>

<code>24dd746e9b9f: Download complete </code>

<code>706766fe1019: Download complete </code>

<code>a62a42e77c9c: Download complete </code>

<code>2c014f14d3d9: Download complete </code>

<code>b7cf8f0d9e82: Download complete </code>

<code>d0b170ebeeab: Download complete </code>

<code>171efc310edf: Download complete </code>

<code>522ed614b07a: Download complete </code>

<code>605ed9113b86: Download complete </code>

<code>22b93b23ebb9: Download complete </code>

<code>2ac557a88fda: Download complete </code>

<code>1f3b4c532640: Download complete </code>

<code>27ebaac643a7: Download complete </code>

<code>ce630195cb45: Download complete </code>

<code>Status: Downloaded newer image </code><code>for</code> <code>docker.io</code><code>/registry</code><code>:latest</code>

<code>[root@localhost ~]</code><code># docker images</code>

<code>REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE</code>

<code>docker.io</code><code>/registry</code>   <code>latest              24dd746e9b9f        3 days ago          413.8 MB</code>

3、基于私有倉庫鏡像運作容器

<code>[root@localhost ~]</code><code># docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry docker.io/registry</code>

<code>bb2c0d442df94e281479332c2608ef144f378e71743c5410e36b80c465771a95</code>

<code>[root@localhost ~]</code><code># docker ps -a</code>

<code>CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                    NAMES</code>

<code>bb2c0d442df9        docker.io</code><code>/registry</code><code>:latest   </code><code>"docker-registry"</code>   <code>10 seconds ago      Up 7 seconds        0.0.0.0:5000-&gt;5000</code><code>/tcp</code>   <code>serene_hopper</code>

4、通路私有倉庫

<code>[root@localhost ~]</code><code># curl 127.0.0.1:5000/v1/search</code>

<code>{</code><code>"num_results"</code><code>: 0, </code><code>"query"</code><code>: </code><code>""</code><code>, </code><code>"results"</code><code>: []} </code><code>//</code><code>私有倉庫為空,沒有送出新鏡像到倉庫中</code>

5、從Docker Hub上下載下傳一個ssh鏡像

<code>[root@localhost ~]</code><code># docker search -s 10 ssh</code>

<code>NAME                              DESCRIPTION   STARS     OFFICIAL   AUTOMATED</code>

<code>docker.io: docker.io</code><code>/fedora/ssh</code>                 <code>18                   [OK]</code>

<code>[root@localhost ~]</code><code># docker pull fedora/ssh</code>

<code>Trying to pull repository docker.io</code><code>/fedora/ssh</code> <code>...</code>

<code>2aeb2b6d9705: Download complete </code>

<code>511136ea3c5a: Download complete </code>

<code>00a0c78eeb6d: Download complete </code>

<code>834629358fe2: Download complete </code>

<code>571e8a51403c: Download complete </code>

<code>87d5d42e693c: Download complete </code>

<code>92b5ef05fe68: Download complete </code>

<code>92d3910dc33c: Download complete </code>

<code>cf2e9fa11368: Download complete </code>

<code>Status: Downloaded newer image </code><code>for</code> <code>docker.io</code><code>/fedora/ssh</code><code>:latest</code>

<code>REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE</code>

<code>docker.io</code><code>/registry</code>     <code>latest              24dd746e9b9f        3 days ago          413.8 MB</code>

<code>docker.io</code><code>/fedora/ssh</code>   <code>latest              2aeb2b6d9705        9 days ago          254.4 MB</code>

6、建立鏡像連結或為基礎鏡像打個标簽

<code>[root@localhost ~]</code><code># docker tag docker.io/fedora/ssh 127.0.0.1:5000/ssh</code>

<code>127.0.0.1:5000</code><code>/ssh</code>     <code>latest              2aeb2b6d9705        9 days ago          254.4 MB</code>

7、修改Docker配置檔案制定私有倉庫url

<code>[root@localhost ~]</code><code># vim /etc/sysconfig/docker</code>

<code>OPTIONS=</code><code>'--selinux-enabled --insecure-registry 192.168.0.109:5000'</code>

<code>[root@localhost ~]</code><code># service docker restart</code>

<code>Redirecting to </code><code>/bin/systemctl</code> <code>restart  docker.service</code>

8、送出鏡像到本地私有倉庫中

<code>[root@localhost ~]</code><code># docker push 127.0.0.1:5000/ssh</code>

<code>The push refers to a repository [127.0.0.1:5000</code><code>/ssh</code><code>] (len: 1)</code>

<code>Sending image list</code>

<code>Pushing repository 127.0.0.1:5000</code><code>/ssh</code> <code>(1 tags)</code>

<code>511136ea3c5a: Image successfully pushed </code>

<code>00a0c78eeb6d: Image successfully pushed </code>

<code>834629358fe2: Image successfully pushed </code>

<code>571e8a51403c: Image successfully pushed </code>

<code>87d5d42e693c: Image successfully pushed </code>

<code>92b5ef05fe68: Image successfully pushed </code>

<code>92d3910dc33c: Image successfully pushed </code>

<code>cf2e9fa11368: Image successfully pushed </code>

<code>2aeb2b6d9705: Image successfully pushed </code>

<code>Pushing tag </code><code>for</code> <code>rev [2aeb2b6d9705] on {http:</code><code>//127</code><code>.0.0.1:5000</code><code>/v1/repositories/ssh/tags/latest</code><code>}</code>

9、檢視私有倉庫是否存在對應的鏡像

<code>{</code><code>"num_results"</code><code>: 1, </code><code>"query"</code><code>: </code><code>""</code><code>, </code><code>"results"</code><code>: [{</code><code>"description"</code><code>: </code><code>""</code><code>, </code><code>"name"</code><code>: </code><code>"library/ssh"</code><code>}]}</code>

10、檢視鏡像的存儲目錄和檔案

<code>[root@localhost ~]</code><code># tree /opt/data/registry/repositories/</code>

<code>/opt/data/registry/repositories/</code>

<code>└── library</code>

<code>    </code><code>└── </code><code>ssh</code>

<code>        </code><code>├── _index_images</code>

<code>        </code><code>├── json</code>

<code>        </code><code>├── tag_latest</code>

<code>        </code><code>└── taglatest_json</code>

<code>2 directories, 4 files</code>

三、從私有倉庫中下載下傳已有的鏡像

1、登陸另外一台Docker用戶端

<code>[root@localhost ~]</code><code># ssh [email protected]</code>

<code>The authenticity of host </code><code>'192.168.0.110 (192.168.0.110)'</code> <code>can't be established.</code>

<code>ECDSA key fingerprint is 5b:81:4b:66:d6:</code><code>dd</code><code>:48:16:9f:85:58:72:21:bd:ba:39.</code>

<code>Are you sure you want to </code><code>continue</code> <code>connecting (</code><code>yes</code><code>/no</code><code>)? </code><code>yes</code>

<code>Warning: Permanently added </code><code>'192.168.0.110'</code> <code>(ECDSA) to the list of known hosts.</code>

<code>[email protected]'s password: </code>

<code>Last login: Sun Apr 26 14:39:51 2015 from 192.168.0.103</code>

2、修改Docker配置檔案

<code>OPTIONS=</code><code>'--selinux-enabled --insecure-registry 192.168.0.109:5000'</code>        <code>//</code><code>添加私有倉庫位址</code>

3、從私有倉庫中下載下傳已有的鏡像

<code>[root@localhost ~]</code><code># docker pull 192.168.0.109:5000/ssh</code>

<code>Trying to pull repository 192.168.0.109:5000</code><code>/ssh</code> <code>...</code>

<code>Status: Downloaded newer image </code><code>for</code> <code>192.168.0.109:5000</code><code>/ssh</code><code>:latest</code>

<code>REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE</code>

<code>192.168.0.109:5000</code><code>/ssh</code>   <code>latest              2aeb2b6d9705        9 days ago          254.4 MB</code>

四、浏覽器通路倉庫

<a href="http://s3.51cto.com/wyfs02/M02/6B/FB/wKioL1U8yD2CICJXAACRXA3Ij1w707.jpg" target="_blank"></a>

     本文轉自zys467754239 51CTO部落格,原文連結:http://blog.51cto.com/467754239/1638770,如需轉載請自行聯系原作者

繼續閱讀