Utiliser docker dans un environnement proxy sur ubuntu 20.04.1

Utiliser docker dans un environnement proxy sur ubuntu 20.04.1

Installez docker.

Si vous n'avez pas installé docker, suivez les étapes de l'article ci-dessous pour installer docker https://qiita.com/m-tmatma/items/06eb40514306e09142c4

Préparez un proxy

Préparez un proxy comme indiqué dans l'article suivant. https://qiita.com/m-tmatma/items/7b5ce812c85f30546209

Cet article suppose que l'adresse IP du proxy est «192.168.11.61» et que le numéro de port est «3128».

Émuler un environnement accessible uniquement via un proxy

Émulez un environnement accessible uniquement via un proxy. En conséquence, il est possible de détecter si le réglage est incorrect.

Interdire HTTP et HTTPS

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

Git, SSH interdit (ce n'est pas obligatoire, mais juste au cas où)

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

apt

Définir les paramètres de proxy apt

Je pensais que apt pouvait être utilisé dans le conteneur docker, mais comme les paramètres d'environnement définis dans ~ / .docker / config.json sont valides, aucun paramètre n'est requis pour une utilisation à l'intérieur du conteneur. Non requis si la variable d'environnement est définie sur http_proxy`` https_proxy même dans l'environnement hôte.

sudo nano /etc/apt/apt.conf

Enregistrez avec le contenu suivant.

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

Définissez les variables proxy comme suit.

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";

Mettre à jour apt

sudo apt update -y
sudo apt upgrade -y

installation de docker

Installation

Installez docker en vous référant à https://qiita.com/m-tmatma/items/06eb40514306e09142c4.

sudo apt install -y docker.io docker-compose

Ajouter l'utilisateur actuel au groupe de docker (facultatif si sudo est fait à chaque démarrage de docker)

Cette étape n'est nécessaire que si vous souhaitez exécuter la commande docker sans sudo.

Il est pratique d'exécuter docker sans sudo, alors ajoutez l'utilisateur actuel au groupe docker. Redémarrez pour réfléchir.

sudo usermod -aG docker $USER
sudo reboot

Si vous redémarrez ici, réexécutez la [procédure iptables](#emulate un environnement accessible uniquement via un proxy).

Définissez le proxy dans dockerd avec une variable d'environnement.

Paramètres du proxy

Exécutez la commande suivante.

sudo systemctl edit docker

Si vous ne spécifiez pas d'adresse IP exclue

Entrez le contenu suivant dans l'éditeur lancé par sudo systemctl edit docker, enregistrez et quittez.

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

Lors de la spécification d'une adresse IP exclue

Dans l'éditeur lancé par sudo systemctl edit docker, spécifiez NO_PROXY en plus. Entrez le contenu suivant, enregistrez et quittez.

[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"

Vérifier les paramètres

Il est enregistré dans / etc / systemd / system / docker.service.d / override.conf. Voici un exemple lorsque l'adresse IP exclue n'est pas spécifiée.

$ 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"

Refléter les paramètres de proxy

Reflétez les paramètres.

sudo systemctl daemon-reload

Vérifiez les paramètres du proxy

Vérifiez les paramètres.

sudo systemctl show docker --property Environment

Redémarrer le docker

Redémarrez le docker.

sudo systemctl restart docker

Exécutez ce qui suit et vérifiez qu'il est reflété dans «HTTP Proxy» et «HTTPS Proxy».

docker info

référence http://docs.docker.jp/engine/articles/systemd.html#http https://docs.docker.com/config/daemon/systemd/

Paramètres Docker pour chaque utilisateur

Créez un dossier pour enregistrer le fichier de paramètres.

mkdir -p ~/.docker

Modifiez ~ / .docker / config.json.

nano  ~/.docker/config.json

Si vous ne spécifiez pas d'adresse IP exclue

Entrez le contenu suivant dans ~ / .docker / config.json et enregistrez.

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

Lors de la spécification d'une adresse IP exclue

Pour spécifier la condition d'exclusion du proxy, spécifiez-la avec noProxy dans ~ / .docker / config.json.

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

référence https://docs.docker.com/network/proxy/ https://docs.docker.com/network/proxy/#configure-the-docker-client

Vérifier la traction du docker

Vous pouvez effectuer l'extraction de docker comme suit.

$ 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

Par précaution, l'accès direct à http et https est interdit même si vous vérifiez avec iptables.

$ 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

Utiliser docker dans un environnement proxy sur ubuntu 20.04.1
Script de configuration pour l'utilisation de docker dans un environnement proxy sur ubuntu 20.04.1
[Docker] Utiliser des variables d'environnement dans Nginx conf
Essayez de mettre Docker dans ubuntu sur WSL
Utiliser cpplapack avec ubuntu
Installez simplement Laravel 8 sur le docker dans l'environnement PHP8
Installez Docker sur Ubuntu Server 20.04
Oracle Java 8 sur Docker Ubuntu
Installation du proxy MAV sur Ubuntu 18.04
Mémo de commande pour installer xeyes dans l'environnement docker ubuntu
Les débutants utilisent ubuntu dans la fenêtre pour préparer l'environnement des rails
Utiliser Java Web Start dans un environnement OpenJDK sous Windows
Installez docker et docker-compose sur ubuntu dans les plus brefs délais
Utiliser Docker Compose sur Windows 10 Famille
Comment utiliser les bio-formats sur Ubuntu 20.04
Créer un environnement XAMPP sur Ubuntu
Rails sur la procédure de construction de l'environnement Docker
Utiliser la complétion dans Eclipse sur Mac
Utiliser Docker CE (officiel) avec CentOS 8
Créer un environnement de développement Unity sur docker
Installez Vivado dans l'environnement WSL2 + Ubuntu 20.04 LTS
Exécutez NordVPN dans le conteneur Ubuntu Docker (Windows)
Grattage avec marionnettiste à Nuxt sur Docker.
Modifier Mysql avec des commandes dans l'environnement Docker
Comment utiliser Docker dans VSCode DevContainer
[Ruby] Création d'un environnement de développement Ruby sur Ubuntu
Utiliser cljstyle avec Spacemacs sur Ubuntu sur WSL2
Créer un environnement de lecture de code Redmine sur Docker
Comment utiliser les variables d'environnement dans RubyOnRails
Créer un environnement avec Docker sur AWS
Jusqu'à ce que vous exécutiez apache avec ubuntu sur docker
Créer un environnement de développement Ultra96v2 sur Docker 1
Comprendre en 5 minutes !! Comment utiliser Docker
Exécutez Ubuntu + ROS avec Docker sur Mac
[Construction de l'environnement] Rails + MySQL + Docker (les débutants peuvent également l'utiliser en 30 minutes!)
Mettez Zabbix dans Ubuntu avec Docker et surveillez Docker sur le même hôte
Remarque: paramètres nginx.conf pour CORS dans Exment sur l'environnement Lightsail + Docker (nginx)
Essayez d'exécuter ScalarDB sur WSL Ubuntu (Construction de l'environnement)
Liberty sur Docker
Publication externe et connexion de MySQL sur Ubuntu
Construction de l'environnement Protobuf et gRPC C ++ sur Ubuntu 18.04
[Java] Créer un environnement de développement Java sur Ubuntu et vérifier l'exécution
Le proxy transparent WSL2 + améliore Docker sous l'environnement proxy (légèrement)