1. 程式人生 > >Docker 系列四(自定義倉庫).

Docker 系列四(自定義倉庫).

html 交互 reload 寫入 get ror tls 比較 nexus3

一、Docker hub 交互

Docker hub 是 Docker 官方維護的一個公共倉庫,大部分需求都可以通過在 Docker hub 中直接下載鏡像來完成。接下來,來看一下怎麽與 Docker hub 進行交互,包括登陸登出以及將本地鏡像推送到 Docker hub 等...

註冊https://hub.docker.com/ 註冊的時候需要FQ~~

登陸:docker login

技術分享圖片

登出:docker logout

搜索鏡像

docker search [name] --filter=stars=30
                     --filter=stars=N (參數可以指定僅顯示收藏數量為 N 以上的鏡像)

技術分享圖片

拉取鏡像:docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標簽]

推送鏡像

#1、打鏡像標簽(username 表示Docker賬號用戶名)
docker tag REPOSITORY[:tag] username/REPOSITORY[:tag]
docker tag myenv:1.0 jmcui/myenv:1.0

#2、推送到Docker hub
docker push username/REPOSITORY[:tag]
docker push jmcui/myenv:1.0

二、創建 Docker 私庫(基於HTTP)

在企業中把內部的一些工具包放入 Nexus 中是比較常見的做法,最新版本 Nexus3.x 全面支持 Docker 的私有鏡像。所以使用 Nexus3.x 一個軟件來管理 Docker , Maven , Yum , PyPI 等是一個明智的選擇。

1、使用 Docker 安裝 Nexus

docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 --mount src=nexus-data,target=/nexus-data sonatype/nexus3
## 8081:nexus3網頁端
## 8082:docker(hosted)私有倉庫,可以pull和push ## 8083:docker(proxy)代理遠程倉庫,只能pull

2、登陸

訪問 http:// ip地址:8081 默認賬號:admin,默認密碼:admin123

技術分享圖片

3、創建私有倉庫

頁面上方的齒輪按鈕 —> Repository —> Repositories —> Create repository —> 選擇 docker (hosted)

技術分享圖片

還可以創建一個 docker (proxy) 類型的倉庫鏈接到 DockerHub 上。再創建一個 docker (group) 類型的倉庫把剛才的 hosted 與 proxy 添加在一起。主機在訪問的時候默認下載私有倉庫中的鏡像,如果沒有將鏈接到 DockerHub 中下載並緩存到 Nexus 中。

4、配置支持 HTTP

Docker 默認不允許非 HTTPS 方式推送鏡像。我們可以通過 Docker 的配置選項來取消這個限制,(Ubuntu 16.04+, Debian 8+, centos 7)在 /etc/docker/daemon.json 中寫入如下內容:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "xx.xx.xx.xx:8082"
  ]
}

重啟 Docker :

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

5、驗證效果

#1、登陸
docker login xx.xx.xx.xx:8082
#2、私庫標簽
docker tag myenv:1.0  xx.xx.xx.xx:8082/myenv
#3、推送鏡像到私有倉庫
docker push xx.xx.xx.xx:8082/myenv
#4、查看私有倉庫鏡像,驗證是否推送成功
curl xx.xx.xx.xx:8082/v2/_catalog
#5、拉取私有倉庫鏡像
docker pull xx.xx.xx.xx:8082/myenv

三、私有倉庫高級配置(HTTPS 認證)

下面,我們將要搭建的私有倉庫地址為 docker.domain.com,使用 openssl 自行簽發 docker.domain.com 的站點 SSL 證書,並用 Docker Compose 搭建一個擁有權限認證、TLS 的私有倉庫。

由於是在 Centos 7 下玩的 Docker ,首先要解決 Docker Compose 安裝的問題。

1、安裝 python-pip

#1、檢查linux有沒有安裝python-pip包
 pip -V
#2、執行安裝 epel-release 包
 yum -y install epel-release
#3、執行安裝 python-pip 包
 yum install python-pip
#4、對安裝好的pip進行升級
 pip install --upgrade pip
#5、再次驗證pip是否安裝成功
 pip -V
#6、安裝Docker-Compose(失敗的話可重復多次)
 pip --default-timeout=300 install -U docker-compose --ignore-installed requests
#7、檢查docker-compose 安裝
 docker-compose -version

2、HTTPS 認證

因為對 HTTPS 的那些證書認證什麽的,著實沒有什麽大的概念,就不在這裏大誇其辭了。國內各大雲服務商均提供了免費的站點證書,常見的做法是:申請個域名,綁定服務器IP,然後下載雲服務提供的證書,添加認證即可。

這裏的做法是使用 openssl 自行簽發 docker.domain.com 的站點 SSL 證書,也是看著步驟,一步步傻瓜式操作下來的,就不獻醜了。具體步驟可以參考:https://yeasy.gitbooks.io/docker_practice/content/repository/registry_auth.html

至於坑,那還是有的,比如上面的 Docker Compose 安裝就折騰了好久。另外需要註意的是,最後生成的文件都要放在 /etc/docker 相關目錄下,目錄結構如下:

技術分享圖片

技術分享圖片

參考資料:《Docker — 從入門到實踐》

Docker 系列四(自定義倉庫).