提供されたテンプレートを使用して AWS に Mesosphere DCOS をインストールしました。ここで、すべてのノードを再起動しますが、 --insecure-registry パラメータをすべてのスレーブ ノード (およびマスター) に追加して、docker レジストリと通信できるようにします。したがって、これを行うための最良の方法は、AWS テンプレートの cloud-config スクリプトを使用することです。
そのため、AWS EC2 Launch Configurations で、マスター ノードの構成をコピーし、ユーザー データを調整してから、Auto Scaling グループを更新し、マスターを再起動しました。( How do I use insecure docker registries with Amazon EC2 Container Service (ECS)?の最後にあるこれを行う方法についての素晴らしい回答)
CoreOS ドキュメントで提案されているように、cloud-config のユニット セクションの最後に行が追加されました: https://coreos.com/os/docs/latest/cloud-config.html
units
....Many lines here
- name: docker.service
drop-ins: |-
- name: 50-insecure-registry.conf
content: |
[Service]
Environment=DOCKER_OPTS='--insecure-registry="10.0.1.0/24"'
しかし、その後、マスターは再起動しません。そのため、変更を元に戻す必要がありました。
非常に多くの質問:
を。このテンプレートの cloud-config に docker.service ブロックがないのはなぜですか? ドッカーはいつ、どのように起動しますか?
b. flannel_docker_opts.env ファイルを編集する必要がありますか? 繰り返しますが、この cloud-config にはそのようなファイルへの言及はありません。しかし、このページには言及があります: https://coreos.com/flannel/docs/latest/flannel-config.html
そのページの最後で特に興味深い:
- flanneld.service の ExecStartPost は、/run/flannel/subnet.env の情報を Docker デーモン コマンド ライン引数 (--bip や --mtu など) に変換し、それらを /run/flannel_docker_opts.env ... に保存します。
- /run/flannel_docker_opts.env の docker.service ソースには、コマンド ライン オプションを含む環境変数が含まれており、それらを使用して Docker を起動します。
そして実際、early-docker.service のような言及されたファイルを見ることができますが、cloud-config に flannel についての言及はありません。
しかし、実際に、上記のページに記載されているサービス ファイルを見つけました。
/usr/lib64/udev/rules.d/80-docker.rules
/usr/lib64/systemd/system/early-docker.service
/usr/lib64/systemd/system/early-docker.socket
/usr/lib64/systemd/system/docker.service
/usr/lib64/systemd/system/docker.socket
/usr/lib64/systemd/system/sockets.target.wants/docker.socket
/usr/lib64/systemd/system/early-docker.target
実際、/run/flannel_docker_opts.env ファイルは docker.service ファイルに記載されていますが、/run フォルダーには存在しません。
vi /usr/lib64/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=docker.socket early-docker.target network.target
Requires=docker.socket early-docker.target
[Service]
Environment=TMPDIR=/var/tmp
EnvironmentFile=-/run/flannel_docker_opts.env <<<<<<<<<< HERE!!!!!
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
ExecStart=/usr/lib/coreos/dockerd --daemon --host=fd:// $DOCKER_OPTS $DOCKER_OPT_BIP $DOCKER_OPT_MTU $DOCKER_OPT_IPMASQ
[Install]
c. この docker.service ファイルはどこから来たのですか! クラウド構成には言及されていません。それは CoreOS アーキテクチャの一部ですか?
d. この docker.service が CoreOS の不可欠な部分である場合、すべてのファイルがこの /usr/lib64 パスにあるのはなぜですか? CoreOS ドキュメントには、すべてのファイルの他のパスの場所が記載されています。
任意の提案をいただければ幸いです。私は今、失明しています。この存在しない flannel_docker_conf.env ファイルを作成してみます。しかし、私がやっていることが正しい方法であるかどうかはわかりません。
ありがとう!