今天和大家聊聊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->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,如需轉載請自行聯系原作者