docker集群(二)--portainer+TLS安全連接docker主機(詳細介紹與使用心得)
阿新 • • 發佈:2018-10-11
chm log usr tls term 參考 正常 pac 文件中 http://blog.51cto.com/mysky0708/2298049
承接上文,在生產中如何安全的鏈接docker主機呢?我們采用TLS秘鑰方式。
步驟:
第一部分:首先在docker主機上生成秘鑰,保存到指定地方;
第二部分:在管理節點(portainer)上,指定上述秘鑰,添加節點。
承接上文,在生產中如何安全的鏈接docker主機呢?我們采用TLS秘鑰方式。
步驟:
第一部分:首先在docker主機上生成秘鑰,保存到指定地方;
第二部分:在管理節點(portainer)上,指定上述秘鑰,添加節點。
具體實施過程:
第一部分代碼如下
read -s PASSWORD //定義一個密碼變量 read SERVER //註意主機名變量要與系統對應 cd /etc/docker //切換到生產密鑰的目錄 openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 2048 openssl genrsa -out server-key.pem 2048 openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem //註意主機名要與為上面的SERVER變量一致 openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem openssl genrsa -out key.pem 2048 openssl req -subj ‘/CN=client‘ -new -key key.pem -out client.csr sh -c ‘echo "extendedKeyUsage=clientAuth" > extfile.cnf‘ openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem -extfile extfile.cnf chmod 0400 ca-key.pem key.pem server-key.pem //更改密鑰權限 chmod 0444 ca.pem server-cert.pem cert.pem //更改密鑰權限 rm client.csr server.csr //刪除無用文件 sz {ca.pem,cert.pem,key.pem} //下載秘鑰文件 /usr/bin/dockerd --tls \ //關閉docker,再運行此命令 --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H 0.0.0.0:2376
原文參考:https://blog.csdn.net/bc_aptx4869/article/details/74984171
第二部分在管理節點添加docker主機
- 在hosts文件中添加docker主機名(SERVER變量)與對應ip地址
- 將{ca.pem,cert.pem,key.pem} 上傳到指定位置
-
測試是否聯通
docker --tlsverify --tlscacert=/root/76/ca.pem --tlscert=/root/76/cert.pem --tlskey=/root/76/key.pem -H docker-node01:2376 version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-74.git6e3bb8e.el7.centos.x86_64 Go version: go1.9.4 Git commit: 6e3bb8e/1.13.1 Built: Tue Aug 21 15:23:37 2018 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-74.git6e3bb8e.el7.centos.x86_64 Go version: go1.9.4 Git commit: 6e3bb8e/1.13.1 Built: Tue Aug 21 15:23:37 2018 OS/Arch: linux/amd64 Experimental: false
- 添加至portainer
最後總結一下使用情況:
- 優點:比較安全的管理docker主機
- 缺點:
- 使用TLS方式(啟動docker)與正常啟動,只能二選一,兩者不能並存。也就意味著使用TLS無法在docker主機上運行docker命令;
- 使用TLS方式,無法在portainer上啟動之前(正常啟動下)的容器,只能重新建立;
- 使用TLS方式,無法使用dockerfile創建容器(至少我目前沒找到方法。。)
歡迎大家多多給予修正與補充~~
docker集群(二)--portainer+TLS安全連接docker主機(詳細介紹與使用心得)