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 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».
Émulez un environnement accessible uniquement via un proxy. En conséquence, il est possible de détecter si le réglage est incorrect.
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 80
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 443
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 9418
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 22
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";
sudo apt update -y
sudo apt upgrade -y
Installez docker en vous référant à https://qiita.com/m-tmatma/items/06eb40514306e09142c4.
sudo apt install -y docker.io docker-compose
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).
Exécutez la commande suivante.
sudo systemctl edit docker
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"
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"
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étez les paramètres.
sudo systemctl daemon-reload
Vérifiez les paramètres.
sudo systemctl show docker --property Environment
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/
Créez un dossier pour enregistrer le fichier de paramètres.
mkdir -p ~/.docker
Modifiez ~ / .docker / config.json
.
nano ~/.docker/config.json
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"
}
}
}
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
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