概要
このドキュメントでは、プロキシサーバの背後にあるDockerコンテナがインターネットにアクセスできない場合のトラブルシューティング方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアのバージョンに基づいています。
- CloudCenter バージョン 4.x
- CloudCenter Orchestrator(CCO)
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
背景説明
インターネットへのアクセスにプロキシが必要な場合は、dockerコンテナを設定する必要があります。
問題
以下は、Docker コンテナがインターネットに到達できない問題を再現するための手順です。
rootユーザがCCOでcore_installer.binを実行しようとすると、次のように表示されます。
[root@localhost tmp]# ./core_installer.bin centos7 vmware cco
次のエラーが表示されます。
解決方法
ステップ1:次の引数を指定してcore_installer.binファイルを実行し、コアフォルダを作成します。
[root@localhost]# /core_installer.bin --noexec --keep
ステップ 2:core フォルダに移動します。
[root@localhost]# cd core
ステップ3:コアフォルダから、setup.shスクリプトを実行してdockerをインストールします。
[root@localhost core]# /setup.sh centos7 vmware docker
スクリプトが失敗し、「Failed in Docker」というエラーが表示されます。
ステップ4:Dockerfileを変更します。
[root@localhost core]# vi docker/cliqr-container-worker/Dockerfile
ステップ5:DockerfileのENVセクションにプロキシサーバ情報を追加します。
ENV JAVA_VERSION 1.7.0
ENV http_proxy http://proxy.company.com
ENV https_proxy https://proxy.company.com
注:proxy.company.comを実際のプロキシサーバのアドレスに置き換えます。
ステップ 6:Docker サービスの systemd ドロップイン ディレクトリを作成します。
[root@localhost core]# mkdir /etc/systemd/system/docker.service.d
ステップ7:docker http-proxy.confファイルを作成します。
[root@localhost core]# vi /etc/systemd/system/docker.service.d/http-proxy.conf
ステップ8:プロキシサーバ情報を追加します。
[Service]
Environment="HTTP_PROXY=http://proxy.company.com"
Environment="HTTPS_PROXY=https://proxy.company.com"
Environment="NO_PROXY=localhost,127.0.0.1"
ステップ9:プロキシなしで接続する必要がある内部Dockerレジストリがある場合は、環境変数NO_PROXYに追加します。
Environment="HTTP_PROXY=http://proxy.company.com"
Environment="HTTPS_PROXY=https://proxy.company.com"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.company.com"
注:proxy.company.comを実際のプロキシサーバのアドレスに置き換えます。
ステップ10:設定ファイルを保存し、dockerサービスをリロードします。
[root@localhost]# systemctl daemon-reload
[root@localhost]# systemctl restart docker
ステップ11:これらのコマンドを使用して、最新のイメージにワーカーをビルドします。
[root@localhost]# cd /tmp/core/docker/cliqr-container-worker
[root@localhost cliqr-container-worker]# docker build -t 'cliqr/worker:latest' .
ステップ12:Dockerサービスを再起動します。
[root@localhost]# systemctl restart docker
ステップ13:Dockerコンテナが設定されているかどうかをテストします。
[root@localhost]# docker search coreos
[root@localhost yum]# docker search coreos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
bhuisgen/docker-zabbix-coreos Zabbix agent for CoreOS server 11 [OK]
radial/coreos-pxe Spoke container for running dnsmasq as PXE... 7 [OK]
olalond3/coreos-bitcoind coreos bitcoind 4 [OK]
geowa4/coreos-toolbox Replace the default toolbox image on CoreO... 2 [OK]
million12/linode-coreos-api Deploy CoreOS on Linode. 2 [OK]
pablocouto/coreos-sshguard sshguard for CoreOS 1 [OK]
christianbladescb/newrelic-coreos Run newrelic's sysmond in a container on C... 1 [OK]
allen13/coreos-ansible-toolbox Control CoreOS boxes with ansible using a ... 1 [OK]
shift/coreos-ubuntu-etcd 1 [OK]
majidaldoiongithub/coreos-nvidia run privileged to install nvidia and cuda ... 0 [OK]
skopciewski/coreos-pypy Wrapper for installing pypy on coreos server 0 [OK]
yummly/consul-coreos Consul using etcd on CoreOS for bootstrap.... 0 [OK]
shift/coreos-ubuntu-confd 0 [OK]
jwaldrip/vault-coreos Vault for CoreOS 0 [OK]
zumbrunnen/coreos-gce Google Cloud SDK for CoreOS. Useful for dy... 0 [OK]
cheungpat/coreos-toolbox CoreOS toolbox based on alpine linux 0 [OK]
bretif/coreos-marathon Launch bootstrap script to create mesos/ma... 0 [OK]
openai/coreos-bootstrap Tools for bootstrapping a coreos node. 0 [OK]
docku/pxe-coreos 0 [OK]
kciepluc/coreos-ipxe container with dnsmasq / ipxe environment ... 0 [OK]
kciepluc/coreos-ipxeweb Webserver for bootstrapping CoreOS through... 0 [OK]
evergreenitco/fluentd-kubernetes-coreos-secure Fluentd capture logs containers on Kuberne... 0 [OK]
steigr/coreos CoreOS in Docker 0 [OK]
brandfolder/vault-coreos Vault for CoreOS with an etcd backend. 0 [OK]
kciepluc/coreos-toolbox custom toolbox container for CoreOS 0 [OK]
[root@localhost yum]#
dockerコンテナを設定したら、core_installer.binからインストールを続行する必要があります(CCOをインストールする場合)。
ステップ14:cliqr_modules.confを変更します。
[root@localhost core]# vi /etc/cliqr_modules.conf
ステップ15:ファイルの最後にdockerを追加します。これにより、dockerがインストールされたことがcore_installer.binに通知されます。
sysupdate
gateway
ntp
jdk8
tomcat8
gwtomcatapr
gwmongodb
docker
ステップ16:core_installer.binを再実行して、インストールを完了します。
[root@localhost tmp]# ./core_installer.bin centos7 vmware cco
Verifying archive integrity... All good.
Uncompressing Core Installer V 4.8.0.1.......................................................................................................................................................................................................................................................................................................................................................................................................................................
Installing Module: sysupdate
Module already installed: sysupdate
Installing Module: gateway
Module already installed: gateway
Installing Module: ntp
Module already installed: ntp
Installing Module: jdk8
Module already installed: jdk8
Installing Module: tomcat8
Module already installed: tomcat8
Installing Module: gwtomcatapr
Module already installed: gwtomcatapr
Installing Module: gwmongodb
Module already installed: gwmongodb
Installing Module: docker
Module already installed: docker
Installing Module: usermod
Installing Module: security
[root@localhost tmp]