問題
docker リポジトリで docker イメージを検索しようとすると、以下のエラーが返されます:
# docker search centos Error response from daemon: Get https://index.docker.io/v1/search?q=oracle%2A: dial tcp 52.72.231.247:443: getsockopt: no route to host
Docker のエンジンは正常に動作しています。
# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2017-11-18 06:37:54 UTC; 4min 54s ago Docs: https://docs.docker.com Main PID: 1109 (dockerd) Memory: 72.6M CGroup: /system.slice/docker.service ├─1109 /usr/bin/dockerd └─1127 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/...
また、SELinux は許可モードに設定され、iptables は Docker トラフィックを持つことが許可されます。
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination DOCKER-USER all -- anywhere anywhere DOCKER-ISOLATION all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED DOCKER all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain DOCKER (1 references) target prot opt source destination Chain DOCKER-ISOLATION (1 references) target prot opt source destination RETURN all -- anywhere anywhere Chain DOCKER-USER (1 references) target prot opt source destination RETURN all -- anywhere anywhere
# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28
Docker のプロキシを有効にする
Docker ノードが Docker ハブと通信するには、プロキシを有効にする必要があります。これは、ファイアウォールの下に環境がある場合に必要です。これを行うには 2 つの方法があります。
方法 1
1. Web プロキシ ネットワーク オプションを構成するには、ドロップイン ファイル /etc/systemd/system/docker.service.d/http-proxy.conf を作成します。 次の行を含む:
# vi /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=proxy_URL:port" Environment="HTTPS_PROXY=proxy_URL:port"
2. proxy_URL と port を、Web プロキシの適切な URL とポート番号に置き換えます。
方法 2
1. /etc/sysconfig/docker ファイルを開きます 任意のエディターを使用して、以下の 2 つのエントリを追加します。
# vi /etc/sysconfig/docker HTTP_PROXY="http://[proxy_IP].domain.com:80" HTTPS_PROXY="http://http://[proxy_IP].domain.com:80"
2. 完了したら、docker サービスの開始/停止
# systemctl stop docker # systemctl start docker
Docker のトラブルシューティング – 「競合:削除できません。イメージは実行中のコンテナーによって使用されています」
Docker Hub でパブリック/プライベート リポジトリを作成し、コマンド ラインを使用してリモートで接続する方法