【docker】開啟remote api訪問,並使用TLS加密


背景:

  docker默認是能使用本地的socket進行管理,這個在集群中使用的時候很不方便,因為很多功能還是需要鏈接docker服務進行操作,docker默認也可以開啟tcp訪問,但是這就相當於把整個docker集群對外公開了,很不安全,需要假如TLS進行加密通信,操作如下:

1,TLS配置,生成key文件

#!/bin/bash
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem
openssl genrsa -out server-key.pem 4096
openssl req -sha256 -new -key server-key.pem -out server.csr
openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
openssl genrsa -out key.pem 4096
openssl req -new -key key.pem -out client.csr
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem
rm -v client.csr server.csr
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem

2,將ca.pem,server-cert.pem,server-key.pem復制到要開啟遠程訪問服務器的/root/.docker目錄下(隨便放哪都行)

3,修改docker啟動文件,以centos7為例

  vim  /lib/systemd/system/docker.service

  修改execstart配置

  ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -D -H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/root/.docker/ca.pem -- tlscert=/root/.docker/server-cert.pem --tlskey=/root/.docker/server-key.pem
4,重新加載配置文件,重啟docker進程
  systemctl daemon-reload
  service docker restart
5,測試
  將cert.pem,key.pem這兩個文件復制到測試機上, curl中-k的意思是Allow connections to SSL sites without certs,不驗證證書
  curl -k https://docker服務器IP:2375/info --cert ./cert.pem --key ./key.pem
6,能返回docker信息即為完成


免責聲明!

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



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