【docker】remote apiアクセスを開始し、TLS暗号化を使用

2557 ワード

背景:
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起動ファイルを修正しcentos 7を例に
  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の2つのファイルをテストマシンにコピーします.curlの-kはAllow connections to SSL sites without certsを意味し、証明書を検証しません.
  curl -k https://dockerサーバIP:2375/info--cert./cert.pem--key./key.pem
6、docker情報を返すことができるのは完了です
転載先:https://www.cnblogs.com/zhenglisai/p/8416353.html