En bref: Comment définir les proxies HTTP/HTTPS pour Docker sous Mac OS X?
En détail:
J'exécute Docker (1.12) sur Mac OS X derrière un proxy. J'ai suivi les instructions installation et j'ai installé boot2docker. Cela fonctionne bien si je tire de mon registre Docker interne au réseau.
Cependant, l'erreur suivante apparaît lors de l'extraction de docker.io:
machine:~ me$ docker run ubuntu echo hello world
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
2014/06/30 13:23:26 Get https://index.docker.io/v1/repositories/ubuntu/images:
dial tcp: lookup index.docker.io: no such Host
Remarque 1: DOCKER_Host
, http_proxy
et https_proxy
sont disponibles dans l'environnement (l'exécution de env
affiche les trois).
Note 2: J'ai lu dans d'autres publications que cette erreur se produit lorsque le démon ne fonctionne pas correctement. Cependant, docker version
ne montre aucun problème. De plus, je peux extraire et exécuter des images extraites de mon registre Docker interne au réseau.
Note 3: J'ai pu configurer Docker sur Red Hat Linux (RHEL). Je devais ajouter les informations de proxy à /etc/sysconfig/docker
. J'ai lu qu'il existe un fichier similaire sur Ubuntu (/etc/init/docker.conf
). Cependant, je n’ai pas trouvé ce fichier pour Docker (ou boot2docker?) Sous Mac OS X.
Les fichiers de configuration que vous devez modifier ne seront pas sur votre système de fichiers OS X, ils seront attachés au système Tiny Core Linux VM, qui fait office de serveur Docker local.
Pour configurer le proxy pour cela, démarrez d'abord Boot2docker à partir d'applications. Une fois démarré, ouvrez une fenêtre de terminal et ssh dans la VM:
bash-3.2$ boot2docker ssh
Warning: Permanently added '[localhost]:2022' (RSA) to the list of known hosts.
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.0.1
master : cad5ece - Fri Jun 20 02:03:40 UTC 2014
docker@boot2docker:~$
Maintenant, créez/modifiez/var/lib/boot2docker/profile pour définir les informations de proxy:
docker@boot2docker:~$ Sudo vi /var/lib/boot2docker/profile
Tinycore a besoin des informations de proxy comme suit: protocole: // ip: port
Pour plus de sécurité, je configure les serveurs proxy pour HTTP et HTTPS.
export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080
Vous pouvez maintenant redémarrer le service VM du menu fixe et quitter la machine virtuelle.
docker@boot2docker:~$ Sudo /etc/init.d/docker restart
docker@boot2docker:~$ exit
Connection to localhost closed.
Vous devriez pouvoir exécuter le client maintenant sur l’instance VM.
bash-3.2$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Official Ubuntu base image 356
stackbrew/ubuntu Official Ubuntu base image 39
crashsystems/gitlab-docker A trusted, regularly updated build of GitL...
Cette modification est persistante par le redémarrage de VM. Vous devriez seulement avoir besoin de le faire une fois.
Pour mémoire, VirtualBox a un paramètre de préférence global pour les mandataires mais rien de ce que j'ai essayé ne fonctionnerait.
Depuis la version 1.8 (août 2015) récente, la méthode recommandée par docker pour créer des hôtes docker - y compris les machines virtuelles boot2docker - consiste à utiliser son/ docker-machine utility.
De plus, depuis la version 1.8, docker-machine prend désormais en charge la configuration des mandataires au moment de la création de VM via un appel semblable à celui-ci:
docker-machine create -d virtualbox \
--engine-env HTTP_PROXY=http://192.37.246.181:2010 \
--engine-env HTTPS_PROXY=http://192.37.246.181:2010 \
--engine-env NO_PROXY=novartis.net \
default
Cela se traduit par un VM avec les variables d'environnement spécifiées déjà ajoutées au fichier d'initialisation/var/lib/boot2docker/profile - plus besoin de les ajouter manuellement.
Si vous utilisez Docker pour Mac et que vous vous trouvez dans un environnement proxy.
Cliquez sur l'icône du menu fixe dans la barre de menu supérieure. (comme indiqué à l'étape 1.3 ici )
Allez à Preferences > Advanced
et définissez le proxy dans les options HTTP et HTTPS. Cliquez sur Appliquer et redémarrer en dessous. Tu es prêt. :)
J'ai résolu ce problème en définissant la configuration du proxy dans le fichier .profile:
docker@boot2docker:~$ vi ~/.profile
ajoutez votre proxy à la fin:
#
PS1='\u@\h:\w\$ '
PAGER='less -EM'
MANPAGER='less -isR'
EDITOR=vi
export PS1 PAGER FILEMGR EDITOR MANPAGER
export BACKUP=1
[ "`id -un`" = "`cat /etc/sysconfig/tcuser`" ] && echo "$BACKUP" | Sudo tee /etc/sysconfig/backup >/dev/null 2>&1
export FLWM_TITLEBAR_COLOR="58:7D:AA"
if [ -f "$HOME/.ashrc" ]; then
export ENV="$HOME/.ashrc"
. "$HOME/.ashrc"
fi
TERMTYPE=`/usr/bin/tty`
[ ${TERMTYPE:5:3} == "tty" ] && (
[ ! -f /etc/sysconfig/Xserver ] ||
[ -f /etc/sysconfig/text ] ||
[ -e /tmp/.X11-unix/X0 ] ||
startx
)
export HTTP_PROXY=http://proxy.XX.com:8080
export HTTPS_PROXY=http://proxy.XX.com:8080
enfin, redémarrez votre Boot2Docker.
Pour résoudre le problème de curl dans le docker, j'ai ajouté ce qui suit à l'intérieur du fichier Docker:
ENV http_proxy=http://infoprx2:8080
ENV https_proxy=http://infoprx2:8080
RUN apt-get update && apt-get install -y curl vim
Notez que l'instruction ENV est BEFORE l'instruction RUN.
et afin de rendre le démon docker capable d'accéder à Internet (j'utilise kitematic avec boot2docker), j'ai ajouté ce qui suit dans/var/lib/boot2docker/profile:
export HTTP_PROXY=http://infoprx2:8080
export HTTPS_PROXY=http://infoprx2:8080
Le fichier de configuration dans boot2docker doit être /var/lib/boot2docker/profile
, modifiez ce fichier en proxy http (s) personnalisé.