創建Docker私有倉庫


概念

Docker 包括三個基本概念

  1. 鏡像(Image)
  2. 容器(Container)
  3. 倉庫(Repository)
    理解了這三個概念,就理解了 Docker 的整個生命周期。

鏡像

鏡像是只讀的。
鏡像可以想象成操作系統的安裝鏡像(例如CentOS6.8.ISO)。

容器

容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。
可以理解成 我們通過鏡像安裝操作系統,我們可以開機,關機,等操作。

倉庫

倉庫是集中存放鏡像文件的場所。
有時候會把倉庫和倉庫注冊服務器(Registry)混為一談,並不嚴格區分。
實際上,倉庫注冊服務器上往往存放着多個倉庫。
每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。

一個倉庫中可能有centos ubuntu fedora等鏡像,然后ubuntu可以有12 13 15 16等版本則使用標簽標明。

倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

Registry部署私有倉庫

官方提供了 registry 鏡像來啟動本地的私有倉庫。

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry:2.5.0

不指定tag時候鏡像一直下載失敗,
https://hub.docker.com/r/library/registry/tags/ 找到tag
默認時候倉庫數據存在的位置是/var/lib/registry 可以通過參數v改變倉庫數據的位置。

查看容器運行情況

[root@bogon docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
2119ae9bc14d        registry:2.5.0      "/entrypoint.sh /etc   17 minutes ago      Up 17 minutes       0.0.0.0:5000->5000/tcp   sharp_sinoussi

說明docker的私有倉庫已經運行成功,打開瀏覽器訪問顯示如下內容說明運行正常。

驗證

打開另一台機器
然后推送一個鏡像到registry中

[root@bogon opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              6.8                 c51f770ba2ca        5 weeks ago         194.5 MB
[root@bogon opt]# docker tag c51f770ba2ca 192.168.1.106:5000/centos:6.8
[root@bogon opt]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos                 6.8                 c51f770ba2ca        5 weeks ago         194.5 MB
192.168.1.106:5000/centos   6.8                 c51f770ba2ca        5 weeks ago         194.5 MB

[root@bogon opt]# docker push 192.168.1.106:5000/centos
The push refers to a repository [192.168.1.106:5000/centos] (len: 1)
c51f770ba2ca: Image already exists 
c51f770ba2ca: Buffering to Disk 
b92e3b877355: Image successfully pushed 
b92e3b877355: Buffering to Disk 
Digest: sha256:bb00aaaf4f7993e3d34b02c58573622c4c039712611f521313a7fd00ba687571

可能的問題提示https什么的

需要在客戶端機的docker配置文件上添加other_args="--insecure-registry 192.168.1.106:5000"

echo 'other_args="--insecure-registry 192.168.1.106:5000"' >> /etc/sysconfig/docker

centos7下使用

/etc/sysconfig/docker
OPTIONS='--selinux-enabled=false --log-driver=journald --insecure-registry 192.168.1.106:5000'

顯示push完成 然后通過瀏覽器訪問Registry服務器。如下圖

我們可以刪除新開的機器上面剛push的鏡像,然后在pull下來驗證一下

[root@bogon opt]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos                      6.8                 c51f770ba2ca        5 weeks ago         194.5 MB
192.168.1.106:5000/centos   6.8                 c51f770ba2ca        5 weeks ago         194.5 MB
[root@bogon opt]# docker rmi -f c51f770ba2ca
Untagged: 192.168.1.106:5000/centos:6.8
Untagged: centos:6.8
Deleted: c51f770ba2ca4650038d1a058e13d42195cf481151da1287341a9d44903094c9
Deleted: 7392cee6d21bde3366cffc70d2404e184e8aeac95b2e9198afea920411e0cb00
Deleted: b92e3b87735596ebdc9d0f9b9254ebabc8101513b14e9ebbb924bbddd32a1df5
Deleted: 3690474eb5b4b26fdfbd89c6e159e8cc376ca76ef48032a30fa6aafd56337880
[root@bogon opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
[root@bogon opt]# docker pull 192.168.1.106:5000/centos:6.8
6.8: Pulling from 192.168.1.106:5000/centos
3690474eb5b4: Pull complete 
b92e3b877355: Pull complete 
7392cee6d21b: Pull complete 
c51f770ba2ca: Already exists 
Digest: sha256:bb00aaaf4f7993e3d34b02c58573622c4c039712611f521313a7fd00ba687571
Status: Downloaded newer image for 192.168.1.106:5000/centos:6.8
[root@bogon opt]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
192.168.1.106:5000/centos   6.8                 c51f770ba2ca        5 weeks ago         194.5 MB

然后運行這個容器從root@bogon變成了root@288ff131f83a說明運行也沒問題。

[root@bogon opt]# docker run -it 192.168.1.106:5000/centos:6.8 "bin/bash"
[root@288ff131f83a /]# hostname 
288ff131f83a


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM