一、Docker hub 交互 Docker hub 是 Docker 官方維護的一個公共倉庫,大部分需求都可以通過在 Docker hub 中直接下載鏡像來完成。接下來,來看一下怎麼與 Docker hub 進行交互,包括登陸登出以及將本地鏡像推送到 Docker hub 等... 註冊:http ...
一、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 — 從入門到實踐》