centosでdocker接続dockerを変更するhostデフォルト方式はtls方式
6956 ワード
1.dockerをインストールします.公式サイトのドキュメントcentosの下にdockerをインストールしてください.
2.インストールが完了したら、dockerの各種コマンドを使用してdocker hostに接続できるはずです.docker hostはネイティブで動作しますが、localhostとは異なります.デフォルトでは、docker host(docker daemon)がdockerをリスニングします.sock.本機の下にはdockerがあるはずだ.sockファイルは、様々なdockerコマンドがdocker host上でコマンドを実行したり、情報を取り戻したりすることに成功します.デフォルトの接続方法をtls方式に変更する方法について説明します.
3.openssl生成証明書:
docker接続docker daemon接続方式をtls方式に変更するには、良い証明書を生成することが前提です.証明書はopensslで生成できます.生成する証明書を保存するフォルダを新規作成することをお勧めします.CDから証明書を保管するディレクトリへ
a.keyとca証明書を生成する(keyを生成するときに入力したパスワードは、後で証明書を生成するときに複数回使用され、docker daemon hostのDNS名を使用して次の$HOSTの代わりにする):
b.server-keyとcsrファイルを生成する(docker daemon hostのDNS名を使用して次の$HOSTの代わりにする)
c.あなたのtls接続をipアドレス方式で、ネイティブIPをバインドすることができます(次の$LOCALIPの代わりにネイティブIPを使用します)
d.クライアントアクセスに必要なkeyや証明書などのファイルを生成する
c.クライアント証明書プロファイルの生成
d.登録key
4.生成された証明書を追加するdockerのプロファイルのうち、centosの下にあるdockerのプロファイルは/etc/sysconfig/dockerであり、プロファイルを編集する
5.プロファイルOPTIONSの構成を変更する(以下の証明書アドレスをあなたが生成した証明書の場所に変更する)
6.終了を保存し、dockerサービスを再起動し、docker imagesを入力してミラーを表示する
docker daemon hostに接続できないことを示します.docker daemonは構成済みで再起動されましたが、サービス側が構成を変更したことに相当します.したがって、クライアントがdocker daemon hostに接続する構成も変更する必要があります.
7.docker接続構成の変更
a.rootディレクトリの下にディレクトリを作成する.docker
b.クライアント証明書ファイルをcopyから.dockerディレクトリ
c.環境変数DOCKER_を追加HOSTとDOCKER_TLS_VERIFY
d.開いているファイルに最後に新しい環境変数($YOURIPをdocker daemon hostのIPすなわちネイティブIPに置き換える)を加える
8.構成が完了したら、docker imagesを入力してdocker daemon hostに接続してミラーを表示します.これでdocker daemon host接続方式がtls方式に変更されました.リモートAPIを呼び出すときに使う証明書は~/.dockerフォルダの証明書.
転載先:https://www.cnblogs.com/onlyworld/p/5105849.html
2.インストールが完了したら、dockerの各種コマンドを使用してdocker hostに接続できるはずです.docker hostはネイティブで動作しますが、localhostとは異なります.デフォルトでは、docker host(docker daemon)がdockerをリスニングします.sock.本機の下にはdockerがあるはずだ.sockファイルは、様々なdockerコマンドがdocker host上でコマンドを実行したり、情報を取り戻したりすることに成功します.デフォルトの接続方法をtls方式に変更する方法について説明します.
3.openssl生成証明書:
docker接続docker daemon接続方式をtls方式に変更するには、良い証明書を生成することが前提です.証明書はopensslで生成できます.生成する証明書を保存するフォルダを新規作成することをお勧めします.CDから証明書を保管するディレクトリへ
a.keyとca証明書を生成する(keyを生成するときに入力したパスワードは、後で証明書を生成するときに複数回使用され、docker daemon hostのDNS名を使用して次の$HOSTの代わりにする):
$ openssl genrsa -aes256 -out ca-key.pem 4096
Generating RSA private key, 4096 bit long modulus
............................................................................................................................................................................................++
........++
e is 65537 (0x10001)
Enter pass phrase for ca-key.pem:
Verifying - Enter pass phrase for ca-key.pem:
$ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
Enter pass phrase for ca-key.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:SH
State or Province Name (full name) [Some-State]:ShangHai
Locality Name (eg, city) []:ShangHai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company Name
Organizational Unit Name (eg, section) []:Sales
Common Name (e.g. server FQDN or YOUR name) []:$HOST
Email Address []:[email protected]
b.server-keyとcsrファイルを生成する(docker daemon hostのDNS名を使用して次の$HOSTの代わりにする)
$ openssl genrsa -out server-key.pem 4096
Generating RSA private key, 4096 bit long modulus
.....................................................................++
.................................................................................................++
e is 65537 (0x10001)
$ openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
c.あなたのtls接続をipアドレス方式で、ネイティブIPをバインドすることができます(次の$LOCALIPの代わりにネイティブIPを使用します)
$ echo subjectAltName = IP:$LOCALIP,IP:127.0.0.1 > extfile.cnf
$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
Signature ok
subject=/CN=your.host.com
Getting CA Private Key
Enter pass phrase for ca-key.pem:
d.クライアントアクセスに必要なkeyや証明書などのファイルを生成する
$ openssl genrsa -out key.pem 4096
Generating RSA private key, 4096 bit long modulus
.........................................................++
................++
e is 65537 (0x10001)
$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr
c.クライアント証明書プロファイルの生成
$ echo extendedKeyUsage = clientAuth > extfile.cnf
d.登録key
$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
Signature ok
subject=/CN=client
Getting CA Private Key
Enter pass phrase for ca-key.pem:
4.生成された証明書を追加するdockerのプロファイルのうち、centosの下にあるdockerのプロファイルは/etc/sysconfig/dockerであり、プロファイルを編集する
vi /etc/sysconfig/docker
5.プロファイルOPTIONSの構成を変更する(以下の証明書アドレスをあなたが生成した証明書の場所に変更する)
OPTIONS='--selinux-enabled --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/var/docker/server-cert.pem --tlskey=/var/docker/server-key.pem -H tcp://0.0.0.0:2376'
6.終了を保存し、dockerサービスを再起動し、docker imagesを入力してミラーを表示する
docker images
Get http://10.32.173.215:2376/v1.20/images/json: malformed HTTP response "\x15\x03\x01\x00\x02\x02".
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?
docker daemon hostに接続できないことを示します.docker daemonは構成済みで再起動されましたが、サービス側が構成を変更したことに相当します.したがって、クライアントがdocker daemon hostに接続する構成も変更する必要があります.
7.docker接続構成の変更
a.rootディレクトリの下にディレクトリを作成する.docker
mkdir ~/.docker
b.クライアント証明書ファイルをcopyから.dockerディレクトリ
cp -cv {ca,cert,key}.pem ~/.docker/
c.環境変数DOCKER_を追加HOSTとDOCKER_TLS_VERIFY
vi /etc/profile
d.開いているファイルに最後に新しい環境変数($YOURIPをdocker daemon hostのIPすなわちネイティブIPに置き換える)を加える
export DOCKER_HOST=tcp://$YOURIP:2376
export DOCKER_TLS_VERIFY=1
8.構成が完了したら、docker imagesを入力してdocker daemon hostに接続してミラーを表示します.これでdocker daemon host接続方式がtls方式に変更されました.リモートAPIを呼び出すときに使う証明書は~/.dockerフォルダの証明書.
転載先:https://www.cnblogs.com/onlyworld/p/5105849.html