Verwenden Sie Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1

Verwenden Sie Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1

Installieren Sie Docker.

Wenn Sie Docker nicht installiert haben, führen Sie die Schritte im folgenden Artikel aus, um Docker zu installieren https://qiita.com/m-tmatma/items/06eb40514306e09142c4

Bereiten Sie einen Proxy vor

Bereiten Sie einen Proxy vor, wie im folgenden Artikel gezeigt. https://qiita.com/m-tmatma/items/7b5ce812c85f30546209

In diesem Artikel wird davon ausgegangen, dass die IP des Proxys "192.168.11.61" und die Portnummer "3128" lautet.

Emulieren Sie eine Umgebung, auf die nur über einen Proxy zugegriffen werden kann

Emulieren Sie eine Umgebung, auf die nur über einen Proxy zugegriffen werden kann. Dadurch kann festgestellt werden, wenn die Einstellung falsch ist.

Verbieten Sie HTTP und HTTPS

sudo iptables -A OUTPUT -j REJECT -p tcp --dport 80
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 443

Git, SSH verboten (dies ist nicht erforderlich, aber nur für den Fall)

sudo iptables -A OUTPUT -j REJECT -p tcp --dport 9418
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 22

apt

Legen Sie die entsprechenden Proxy-Einstellungen fest

Ich dachte, dass apt im Docker-Container verwendet werden könnte, aber da die in ~ / .docker / config.json festgelegten Umgebungseinstellungen gültig sind, sind für die Verwendung im Container keine Einstellungen erforderlich. Nicht erforderlich, wenn die Umgebungsvariable auch in der Hostumgebung auf "http_proxy" "https_proxy" gesetzt ist.

sudo nano /etc/apt/apt.conf

Speichern Sie mit folgendem Inhalt.

Acquire::http::Proxy "http://192.168.11.61:3128";
Acquire::https::Proxy "http://192.168.11.61:3128";

Stellen Sie die Proxy-Variablen wie folgt ein.

test@test-vmware:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://192.168.11.61:3128";
Acquire::https::Proxy "http://192.168.11.61:3128";

Apt aktualisieren

sudo apt update -y
sudo apt upgrade -y

Docker installieren

Installation

Installieren Sie Docker unter https://qiita.com/m-tmatma/items/06eb40514306e09142c4.

sudo apt install -y docker.io docker-compose

Aktuellen Benutzer zur Docker-Gruppe hinzufügen (optional, wenn sudo bei jedem Docker-Start ausgeführt wird)

Dieser Schritt ist nur erforderlich, wenn Sie den Docker-Befehl ohne sudo ausführen möchten.

Es ist praktisch, Docker ohne Sudo auszuführen. Fügen Sie daher den aktuellen Benutzer zur Docker-Gruppe hinzu. Starten Sie neu, um zu reflektieren.

sudo usermod -aG docker $USER
sudo reboot

Wenn Sie hier neu starten, führen Sie [iptables procedure] erneut aus (# emulieren Sie eine Umgebung, auf die nur über einen Proxy zugegriffen werden kann).

Legen Sie den Proxy in dockerd mit einer Umgebungsvariablen fest.

Proxy-Einstellungen

Führen Sie den folgenden Befehl aus.

sudo systemctl edit docker

Wenn Sie keine ausgeschlossene IP angeben

Geben Sie den folgenden Inhalt in den Editor ein, der von sudo systemctl edit docker gestartet wurde, speichern Sie ihn und beenden Sie ihn.

[Service]
Environment="HTTP_PROXY=http://192.168.11.61:3128"
Environment="HTTPS_PROXY=http://192.168.11.61:3128"

Bei Angabe einer ausgeschlossenen IP

Geben Sie in dem von sudo systemctl edit docker gestarteten Editor zusätzlich NO_PROXY an. Geben Sie den folgenden Inhalt ein, speichern Sie ihn und beenden Sie ihn.

[Service]
Environment="HTTP_PROXY=http://192.168.11.61:3128"
Environment="HTTPS_PROXY=http://192.168.11.61:3128"
Environment="NO_PROXY=localhost,127.0.0.1"

Überprüfen Sie die Einstellungen

Es wird in / etc / systemd / system / docker.service.d / override.conf gespeichert. Das Folgende ist ein Beispiel, wenn die ausgeschlossene IP nicht angegeben ist.

$ cat /etc/systemd/system/docker.service.d/override.conf 
[Service]
Environment="HTTP_PROXY=http://192.168.11.61:3128" "HTTPS_PROXY=http://192.168.11.61:3128"

Proxy-Einstellungen widerspiegeln

Reflektieren Sie die Einstellungen.

sudo systemctl daemon-reload

Überprüfen Sie die Proxy-Einstellungen

Überprüfen Sie die Einstellungen.

sudo systemctl show docker --property Environment

Starten Sie Docker neu

Starten Sie Docker neu.

sudo systemctl restart docker

Führen Sie die folgenden Schritte aus und überprüfen Sie, ob sie in "HTTP-Proxy" und "HTTPS-Proxy" enthalten sind.

docker info

Referenz http://docs.docker.jp/engine/articles/systemd.html#http https://docs.docker.com/config/daemon/systemd/

Docker-Einstellungen für jeden Benutzer

Erstellen Sie einen Ordner, um die Einstellungsdatei zu speichern.

mkdir -p ~/.docker

Bearbeiten Sie ~ / .docker / config.json.

nano  ~/.docker/config.json

Wenn Sie keine ausgeschlossene IP angeben

Geben Sie den folgenden Inhalt in ~ / .docker / config.json ein und speichern Sie.

{
  "proxies": {
    "default": {
      "httpProxy": "http://192.168.11.61:3128",
      "httpsProxy": "http://192.168.11.61:3128"
    }
  }
}

Bei Angabe einer ausgeschlossenen IP

Um die Ausschlussbedingung für den Proxy anzugeben, geben Sie sie mit "noProxy" in "~ / .docker / config.json" an.

{
  "proxies": {
    "default": {
      "httpProxy": "http://192.168.11.61:3128",
      "httpsProxy": "http://192.168.11.61:3128",
      "noProxy": "localhost,127.0.0.1"
    }
  }
}

Referenz https://docs.docker.com/network/proxy/ https://docs.docker.com/network/proxy/#configure-the-docker-client

Überprüfen Sie den Docker-Zug

Sie können Docker wie folgt ziehen.

$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
df20fa9351a1: Pull complete 
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Vorsorglich ist der direkte Zugriff auf http und https verboten, auch wenn Sie sich bei iptables erkundigen.

$ sudo 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-STAGE-1  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         
REJECT     tcp  --  anywhere             anywhere             tcp dpt:https reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             tcp dpt:http reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             tcp dpt:git reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             tcp dpt:ssh reject-with icmp-port-unreachable

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

Recommended Posts

Verwenden Sie Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
[Docker] Verwenden Sie Umgebungsvariablen in Nginx conf
Versuchen Sie, Docker in Ubuntu auf WSL zu setzen
Verwenden Sie cpplapack mit Ubuntu
Installieren Sie einfach Laravel 8 auf dem Docker in der PHP8-Umgebung
Installieren Sie Docker unter Ubuntu Server 20.04
Oracle Java 8 unter Docker Ubuntu
Installieren von MAV Proxy unter Ubuntu 18.04
Befehlsnotiz zum Installieren von xeyes in der Ubuntu-Docker-Umgebung
Anfänger verwenden Ubuntu im Fenster, um die Schienenumgebung vorzubereiten
Verwenden Sie Java Web Start in einer OpenJDK-Umgebung unter Windows
Installieren Sie Docker und Docker-Compose in kürzester Zeit auf Ubuntu
Verwenden Sie Docker Compose unter Windows 10 Home
Verwendung von Bio-Formaten unter Ubuntu 20.04
Erstellen Sie eine XAMPP-Umgebung unter Ubuntu
Konstruktionsverfahren für Rails on Docker-Umgebungen
Verwenden Sie die Vervollständigung in Eclipse auf dem Mac
Verwenden Sie Docker CE (Official) mit CentOS 8
Erstellen Sie eine Unity-Entwicklungsumgebung auf Docker
Installieren Sie Vivado in der WSL2 + Ubuntu 20.04 LTS-Umgebung
Führen Sie NordVPN im Docker (Windows) Ubuntu-Container aus
Schaben mit Puppenspieler in Nuxt auf Docker.
Bearbeiten Sie MySQL mit Befehlen in der Docker-Umgebung
Verwendung von Docker in VSCode DevContainer
[Ruby] Erstellen einer Ruby-Entwicklungsumgebung unter Ubuntu
Verwenden Sie cljstyle mit Spacemacs unter Ubuntu unter WSL2
Erstellen Sie eine Redmine-Code-Leseumgebung in Docker
Verwendung von Umgebungsvariablen in RubyOnRails
Erstellen Sie eine Umgebung mit Docker unter AWS
Bis Sie Apache mit Ubuntu auf Docker ausführen
Erstellen Sie eine Ultra96v2-Entwicklungsumgebung auf Docker 1
Verstehe in 5 Minuten !! Wie man Docker benutzt
Führen Sie Ubuntu + ROS mit Docker auf dem Mac aus
[Umgebungskonstruktion] Rails + MySQL + Docker (Anfänger können es auch in 30 Minuten verwenden!)
Setzen Sie Zabbix mit Docker in Ubuntu ein und überwachen Sie Docker auf demselben Host
Hinweis: Die Einstellungen für nginx.conf für CORS in der Umgebung von Exment on Lightsail + Docker (nginx)
Versuchen Sie, ScalarDB unter WSL Ubuntu (Environment Construction) auszuführen.
Freiheit auf Docker
Externe Veröffentlichung und Anmeldung von MySQL unter Ubuntu
Protobuf- und gRPC C ++ - Umgebungskonstruktion unter Ubuntu 18.04
[Java] Erstellen Sie eine Java-Entwicklungsumgebung unter Ubuntu und überprüfen Sie die Ausführung
Transparenter WSL2 + Proxy verbessert Docker in der Proxy-Umgebung (geringfügig)