Das Problem
Beim Versuch, Docker-Images im Docker-Repository zu suchen, wird der folgende Fehler zurückgegeben:
# 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
Die Docker-Engine läuft einwandfrei.
# 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/...
Außerdem ist SELinux auf den Permissive-Modus eingestellt und iptables dürfen Docker-Datenverkehr haben.
# 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
Proxy für Docker aktivieren
Damit der Docker-Knoten mit dem Docker-Hub kommunizieren kann, muss der Proxy aktiviert sein. Dies ist erforderlich, wenn Sie eine Umgebung unter der Firewall haben. Dafür gibt es zwei Möglichkeiten.
Methode 1
1. Um Web-Proxy-Netzwerkoptionen zu konfigurieren, erstellen Sie die Drop-In-Datei /etc/systemd/system/docker.service.d/http-proxy.conf das die folgenden Zeilen enthält:
# vi /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=proxy_URL:port" Environment="HTTPS_PROXY=proxy_URL:port"
2. Ersetzen Sie Proxy_URL und Port durch die entsprechenden URLs und Portnummern für Ihren Web-Proxy.
Methode 2
1. Öffnen Sie die Datei /etc/sysconfig/docker Verwenden Sie einen beliebigen Editor und fügen Sie die beiden folgenden Einträge hinzu.
# vi /etc/sysconfig/docker HTTP_PROXY="http://[proxy_IP].domain.com:80" HTTPS_PROXY="http://http://[proxy_IP].domain.com:80"
2. Starten/stoppen Sie nach Abschluss den Docker-Dienst
# systemctl stop docker # systemctl start docker