LoginSignup
8
4

More than 5 years have passed since last update.

proxy環境でbuild-argを使ってもapt-getが失敗する

Posted at

systemd経由でproxyの設定を書き、docker build時に--build-argを使用したが、apt-getに失敗した

環境

環境は以下の通り
Host: ubuntu 16.04-1
container: ubuntu:16.04
docker 17.12-1ce
docker-compose

対策

1. $HOME/.docker/config.jsonにproxy設定を記載する

config.json
{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://proxy.example.co.jp:8080",
     "httpsProxy": "http://proxy.example.co.jp:8080"
   }
 }
}

config.jsonで使用できる項目

2. dns設定systemd経由で記載する

systemd起動のDockerでdnsオプションを有効にする

3. docker-composeの場合はargsを用いる

使用しているdocker-composeではconfig.jsonの結果が反映されないかった。
githubにてissue #5601が上がっていて、1.20.0にて修正されるらしい。

手順

systemd経由でdockerのproxy設定を書く
/etc/systemd/system/docker.service.d/http-proxy.conf

/etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
# 改行しない
Environment="HTTP_PROXY=http://proxy.example.co.jp:8080" "HTTPS_PROXY=http://proxy.example.co.jp:8080"
# systemdにconfファイルを読み直しさせる
$ sudo systemctl daemon-reload
# systemdに設定が反映されているか確認する
$ systemctl show --property=Environment docker
# docker daemonのリスタート
$ sudo systemctl restart docker
# dockerに設定が反映されているか確認する
$ docker info

FROM utuntu:16.04
RUN  apt-get update -y && apt-get install -y wget
$ docker build --build-arg HTTP_PROXY=http://proxy.example.co.jp:8080  --build-arg HTTPS_PROXY=http://proxy.example.co.jp:8080 -t proxy_test .

切り分け

proxy設定がbuild時に見えているか?

->echoしてみる

FROM utuntu:16.04
RUN  echo "$HTTP_PROXY, $HTTPS_PROXY"
RUN  apt-get update -y && apt-get install -y wget

表示された!
$HTTP_PROXY$HTTPS_PROXYに値は設定されているが、apt-getが失敗する。
apt-getにproxyの設定が反映されていない?

apt.confのproxy設定が反映されるか?

FROM utuntu:16.04
RUN  echo -e "Acquire::http::proxy \"$HTTP_PROXY\";\nAcquire::https::proxy \"$HTTPS_PROXY\";" > /etc/apt/apt.conf

RUN  apt-get update -y && apt-get install -y wget

反映された。
ただし--build-argを使って折角proxy設定をimageに含めないとしているのに入ってしまう。なるべく避けたい。
そこで、config.jsonを使用する。

参考

systemd時代のDockerをProxy環境下で使う
dockerのプロキシ設定

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4