Oncle Docker.
Cette fois ** "Il s'avère que l'environnement de production du client ne peut accéder à Internet que via un proxy !!!" ** Un mémo pour éviter de se précipiter dans une telle situation.
En supposant Debian / Ubuntu.
Puisqu'il se trouve dans un environnement proxy, je pense que ce qui suit ne passera pas normalement, mais même si vous définissez la variable d'environnement http_proxy
etc. avec ~ / .bashrc
, si vous faites sudo
, la variable d'environnement ne sera pas héritée, donc elle ne passera pas telle quelle.
$ sudo apt-get install docker.io
Si vous ajoutez l'option -E
à sudo
, elle passera si vous héritez de la variable d'environnement, mais il est difficile d'ajouter -E
à chaque fois, il est donc plus facile d'écrire le fichier de paramètres apt comme une autre méthode.
:/etc/apt/apt.conf.d/00-proxy
Acquire::http::Proxy "http://{HOST}:{port}";
Acquire::https::Proxy "http://{HOST}:{port}";
Je pense que les gens de RHEL / CentOS ont une méthode de réglage pour yum, alors s'il vous plaît google de manière appropriée.
Docker Engine
Si vous déposez l'image avec docker pull
etc., vous devez définir le proxy dans Docker Engine.
Vous pouvez simplement définir la variable d'environnement HTTP_PROXY`` HTTPS_PROXY
, mais je pense que la plupart du temps, cela fonctionne avec Systemd, il est donc rapide de spécifier la variable d'environnement dans le fichier de configuration Systemd.
/lib/systemd/system/docker.service
[Service]
Environment=HTTP_PROXY=http://{HOST}:{port}
Environment=HTTPS_PROXY=http://{HOST}:{port}
Non seulement lors de la construction d'une image Docker, mais si vous voulez accéder à Internet avec ʻapt-get install` etc., vous devez définir un proxy pour chaque outil.
Puisque apt-get, pip, etc. passent par le proxy simplement en définissant la variable d'environnement, définissez la variable d'environnement pour le moment et supportez les outils qui doivent être gérés individuellement. Vous pouvez spécifier les variables d'environnement dans le Dockerfile pour définir les variables d'environnement au moment de la construction, mais il semble préférable d'utiliser ARG.
Par exemple, pour spécifier des arguments dans le fichier de configuration Docker Compose, spécifiez l'option de génération de service comme suit.
docker-compose.yml
build:
context: .
args:
- http_proxy=http://{HOST}:{port}
- https_proxy=http://{HOST}:{port}
- HTTP_PROXY=http://{HOST}:{port}
- HTTPS_PROXY=http://{HOST}:{port}
En fonction de l'outil, le nom de la variable d'environnement correspondant peut être supérieur ou inférieur, il est donc préférable de spécifier les deux.
(Par exemple, apt-get ne reconnaît pas même si vous spécifiez la majuscule HTTP_PROXY
)
Lors du démarrage d'un conteneur, il est nécessaire de définir un proxy pour chaque outil comme dans le cas de la construction, donc la seule chose qui peut être faite autre que le support individuel est de définir des variables d'environnement.
Il est gênant de spécifier la variable d'environnement à chaque démarrage du conteneur, il est donc plus facile d'écrire ~ / .docker / config.json
et d'utiliser la fonction qui définit automatiquement HTTP_PROXY
etc. dans le conteneur.
json:~/.docker/config.json
{
"proxies": {
"default": {
"httpProxy": "http://{HOST}:{port}",
"httpsProxy": "http://{HOST}:{port}"
}
}
}
Configure Docker to use a proxy server | Docker Documentation
Ceux qui ne peuvent pas être gérés par des variables d'environnement avec des paramètres autres que Docker (git, curl, boto3, etc.) Googler et les définir individuellement.
Recommended Posts