centos7 安裝docker及搭建私有倉庫
一、安裝準備
- 必須是 64 位作業系統
- 核心在 3.10 以上【最後centos7及以上,不推薦單獨升級核心】
如果不滿足以上兩個條件,就不用往下看了
二、安裝
先手動更新yum源安裝包
yum update
使用yum安裝docker
yum install docker -y
說明:系統自帶源安裝的版本是1.12.6,如果要安裝高版本的docker,請看第五點檢視版本
docker -v
啟動
systemctl start docker
開機自啟動
systemctl enable docker
三、docker最常用命令
- 停止某個容器,docker stop containerId
- 檢視執行的容器,docker ps
- 啟動容器(後臺模式) docker run -d …
- 檢視安裝映象,docker images
- 刪除一個容器,docker rm containerId/name
- 下載映象,docker pull nginx,從官網docker倉庫下載,慢
- 刪除映象,docker rmi imageID
四、私倉搭建
準備兩臺機器或者虛擬機器
192.168.1.138:Docker倉庫
192.168.1.191:客戶端在138這臺機器下載官方registry
docker pull registry
防火牆新增執行5000埠
iptables -I INPUT 1 -p tcp –dport 5000 -j ACCEPT
通過該映象啟動一個容器
docker run -d -p 5000:5000 –privileged=true -v /opt/registry:/var/lib/registry registry
引數說明:
-v /opt/registry:/var/lib/registry:預設情況下,會將倉庫存放於容器內的/var/lib/registry目錄下,指定本地目錄掛載到容器客戶端上傳映象
修改/etc/sysconfig/docker
找到OPTIONS在其後面追加’–insecure-registry 192.168.0.179:5000’因為Docker從1.3.X之後,與docker registry互動預設使用的是https,而此處搭建的私有倉庫只提供http服務
在docker公共倉庫下載一個映象
docker pull docker.io/centos修改一下該映象的tag
docker tag centos 192.168.1.138:5000/centos
把打了tag的映象上傳到私有倉庫
docker push 192.168.1.138:5000/centos
在191機器上下載剛上傳的映象
修改/etc/sysconfig/docker,新增
ADD_REGISTRY=’–add-registry 192.168.0.179:5000’使用docker pull centos下載私倉的映象
說明:
如果是用https就不用修改/etc/sysconfig/docker,如果沒有新增ADD_REGISTRY且在獲取映象時沒有加地址,則預設從官方下載映象。此時要從自己的倉庫須加域名或ip,比如:docker pull web.site:1433/nginx
五、安裝高版本docker
- 下載yum源
- 使用yum install docker-ce安裝
- 配置docker加速器
vi /etc/systemd/system/multi-user.target.wants/docker.service ,在文中找到 ExecStart=這一行,加上在阿里雲獲取的加速器地址,如:ExecStart=/usr/bin/dockerd –registry-mirror=https://7jdd4k48.mirror.aliyuncs.com
六、注意事項
- 在1.13之前 安裝時/etc/docker/daemon.json自動生成,之後版本已經沒有該檔案了
因為在1.13後推薦不要使用 /etc/docker/daemon.json 檔案對引擎進行配置, 原本使用配置檔案是件好事,比如修改配置不必重啟服務,只需傳送 SIGHUP 訊號即可,但是目前在dockerd中使用配置檔案有一些問題,無法得知具體哪項生效了,啟動日誌以及 docker info,還有 ps -ef 都不會給出生效配置,這對於排障很不方便。
當 dockerd 的引數和daemon.json檔案中的配置有所重複或者衝突,會直接導引擎啟動失敗。
因此在這些問題解決前,先使用修改 docker.service 這類做法來實現。
- 因為CentOS7中的安全模組selinux把許可權禁掉了,引數給容器加特權,不加上傳映象會報許可權錯誤(OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)錯誤。或者直接將selinux設定成disabled