はちゅにっき

こっちのブログはまったり更新

docker-machine create 時に proxy を指定する

なんかよく忘れるのでメモしておこう。

Proxy を通さなければいけない環境下で docker-machine を使う場合は、machine にログインして /var/lib/boot2docker/profile

export HTTPS_PROXY=http://example.com:8080/
# or HTTP_PROXY

と書いてもいいけれど、machine を作成するときにあらかじめ

docker-machine create \
  --driver virtualbox \
  --engine-env HTTPS_PROXY=http://example.com:8080/ \
  default

と HTTP(S)_PROXY を指定して作成したほうがかっこいい。 かっこいいだけで、結局同じだけど。

ちなみに、クライアントも同様に Proxy 配下にいて HTTP(S)_PROXY の値を設定している場合に

docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

と言われて悲しい思いをすることがあるけれど、これは docker コマンドが PROXY を経由してしまうせいなので、おちついて

export NO_PROXY="192.168.99.100,xxx.xxx.xxx.xxx,..."

という感じで NO_PROXY に docker の IP を書いてあげれば OK。

docker-machine env で得られる値を利用して

export no_proxy=$(docker-machine env | perl -nle 'm{DOCKER_HOST="tcp://(.+):.+"} and print $1')

とかやると便利なので alias でも作って eval $(docker-machine env) と同時に両方実行したらいいような気がする。

そうそう、しれっと書かずにやっているけれど docker-machine コマンドで machine 名を省略すると default が使われるみたいですよ。