質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

3回答

6537閲覧

docker build で指定する http_proxy が履歴に残らないようにしたい

matobaa

総合スコア2493

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1グッド

0クリップ

投稿2017/02/22 13:14

編集2017/02/23 02:33

###前提・実現したいこと

docker build の際に Proxyを設定すると、docker history --no-trunc __image__ で表示されてしまいますが、この情報を残さない方法はあるでしょうか。

dockerのOracle12cイメージを作成しようと github.com/oracle/docker-images から持ってきた Dockerfile を使っているのですが、認証ありProxyの裏にいるため、環境変数 http_proxy=http://username:password@proxyhost:port を設定してビルドしています ( buildDockerImage.sh が、環境変数をもとに --build-arg http_proxy=${http_proxy} を指定するようになっています)。

###発生している問題・エラーメッセージ

この手順で作成したイメージの履歴を見ると以下のようになっていて、認証プロキシのユーザ名とパスワードがばっちり記録されてしまっています(出力は見やすく加工しています):

shell

1[matobaa@localhost dockerfiles]$ docker history --no-trunc 919 2IMAGE CREATED BY 3919df44 /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "$ORACLE_BASE/$RUN_FILE"] 41406756 /bin/sh -c #(nop) EXPOSE 1521/tcp 5500/tcp 5bcd8207 /bin/sh -c #(nop) VOLUME [/opt/oracle/oradata] 69459ef3 /bin/sh -c #(nop) WORKDIR /home/oracle 74dbe16d /bin/sh -c #(nop) USER [oracle] 819c1f25 |1 http_proxy=http://matobaa:P@ssW0rd@192.0.2.127:8080 /bin/sh -c $ORACLE_BASE/oraInventory/orainstRoot.sh && $ORACLE_HOME/root.sh && rm -rf $INSTALL_DIR 95e9c84d /bin/sh -c #(nop) USER [root] 109563f43 |1 http_proxy=http://matobaa:P@ssW0rd@192.0.2.127:8080 /bin/sh -c $INSTALL_DIR/$INSTALL_DB_BINARIES_FILE EE 11eee5fc7 /bin/sh -c #(nop) USER [oracle] 120bc6917 |1 http_proxy=http://matobaa:P@ssW0rd@192.0.2.127:8080 /bin/sh -c chmod ug+x $INSTALL_DIR/*.sh && sync && $INSTALL_DIR/$CHECK_SPACE_FILE && $INSTALL_DIR/$SETUP_LINUX_FILE 138a6af9e /bin/sh -c #(nop) COPY multi:7d82a8a4 in /opt/oracle/ 1455bc4e1 /bin/sh -c #(nop) COPY multi:b3dfdefb in /opt/oracle/install/ 15d087972 /bin/sh -c #(nop) ENV INSTALL_DIR=/opt/oracle/install PATH=/opt/oracle/product/12.1.0.2/dbhome_1/bin:/opt/oracle/product/12.1.0.2/dbhome_1/OPatch/:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LD_LIBRARY_PATH=/opt/oracle/product/12.1.0.2/dbhome_1/lib:/usr/lib CLASSPATH=/opt/oracle/product/12.1.0.2/dbhome_1/jlib:/opt/oracle/product/12.1.0.2/dbhome_1/rdbms/jlib 1652d871d /bin/sh -c #(nop) ENV ORACLE_BASE=/opt/oracle ORACLE_HOME=/opt/oracle/product/12.1.0.2/dbhome_1 INSTALL_FILE_1=linuxamd64_12102_database_1of2.zip INSTALL_FILE_2=linuxamd64_12102_database_2of2.zip INSTALL_RSP=db_inst.rsp CONFIG_RSP=dbca.rsp.tmpl PWD_FILE=setPassword.sh PERL_INSTALL_FILE=installPerl.sh RUN_FILE=runOracle.sh START_FILE=startDB.sh CREATE_DB_FILE=createDB.sh SETUP_LINUX_FILE=setupLinuxEnv.sh CHECK_SPACE_FILE=checkSpace.sh INSTALL_DB_BINARIES_FILE=installDBBinaries.sh 177d7dcc5 /bin/sh -c #(nop) MAINTAINER Gerald Venzl <gerald.venzl@oracle.com> 18f005b52 /bin/sh -c #(nop) CMD ["/bin/bash"] 19<missing> /bin/sh -c #(nop) ADD file:8244748e in / 20<missing> /bin/sh -c #(nop) MAINTAINER Oracle Linux Product Team <ol-ovm-info_ww@oracle.com>

###試したこと

docker build をみて --rm=true--force-rm をつけてみたのですが、history は消せませんでした。
systemd で Docker の管理・設定 を参考に、/etc/sysconfig/docker に HTTP_PROXY を指定してみたのですが、中からproxyを通ることができず、ビルドできませんでした。
コンテナをexport | import することでレイヤーをマージできるようです。まだ試せていません。

###補足情報(言語/FW/ツール等のバージョンなど)

[matobaa@localhost ~]$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.3 (Maipo) [matobaa@localhost ~]$ docker --version Docker version 1.12.5, build 047e51b/1.12.5 [matobaa@localhost ~]$ docker info Containers: 1 Running: 1 Paused: 0 Stopped: 0 Images: 8 Server Version: 1.12.5 Storage Driver: devicemapper Pool Name: docker-253:0-134978369-pool Pool Blocksize: 65.54 kB Base Device Size: 21.47 GB Backing Filesystem: xfs Data file: /dev/loop0 Metadata file: /dev/loop1 Data Space Used: 13 GB Data Space Total: 107.4 GB Data Space Available: 34.82 GB Metadata Space Used: 7.311 MB Metadata Space Total: 2.147 GB Metadata Space Available: 2.14 GB Thin Pool Minimum Free Space: 10.74 GB Udev Sync Supported: true Deferred Removal Enabled: false Deferred Deletion Enabled: false Deferred Deleted Device Count: 0 Data loop file: /var/lib/docker/devicemapper/devicemapper/data WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device. Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata Library Version: 1.02.135-RHEL7 (2016-11-16) Logging Driver: journald Cgroup Driver: systemd Plugins: Volume: local Network: overlay bridge null host Authorization: rhel-push-plugin Swarm: inactive Runtimes: runc docker-runc Default Runtime: docker-runc Security Options: seccomp selinux Kernel Version: 3.10.0-514.6.1.el7.x86_64 Operating System: Red Hat Enterprise Linux OSType: linux Architecture: x86_64 Number of Docker Hooks: 2 CPUs: 4 Total Memory: 5.658 GiB Name: localhost.localdomain ID: XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Http Proxy: http://matobaa:P@ssW0rd@192.0.2.127:8080 Https Proxy: http://matobaa:P@ssW0rd@192.0.2.127:8080 Registry: https://registry.access.redhat.com/v1/ Insecure Registries: 127.0.0.0/8 Registries: registry.access.redhat.com (secure), docker.io (secure) [matobaa@localhost ~]$

このスクリプト自体はrootを12GBも要求しやがるので、qiita:Dockerでルートディスクサイズを調整する にそって調整するか、 checkSpaces.sh#L13 の12を10未満に減らすことで build success します。

ikuwow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2017/02/23 03:21

buildの時ではなく、実行の際に環境変数などで渡す方法では問題があるのでしょうか?
matobaa

2017/02/23 04:16 編集

ビルド中、インストールバイナリをwgetする時に proxyを通りたいです。
guest

回答3

0

認証を通さないプロキシをDockerと認証プロキシの間において、そこから認証プロキシに接続するのではどうでしょう?
または、Dockerホスト側で透過プロキシを設定するのも良さそうな気がします。

投稿2017/02/28 04:32

buzztaiki

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

http://qiita.com/minamijoyo/items/711704e85b45ff5d6405
Docker multi stage build という機能でできるようになる! うれしい!
中間イメージを捨ててしまえばよさそうです。

投稿2017/04/19 07:31

matobaa

総合スコア2493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matobaa

2017/04/19 07:34

使えるようになったらHistory見てみます。
guest

0

ENV でも --build-arg でも history で見えてしまうようです。

スマートではないですが、環境変数を記述したファイルを ADD や COPY で転送し、source コマンドで読み込む方法はどうでしょうか。

$ cat ./env export http_proxy=http://(略) $ cat dockerfile (略) ADD env /tmp/env RUN source /tmp/env ; (コマンド) (略) RUN rm -f /tmp/env

###(2017/02/24 01:12) 追記
もしかして、/tmp/env ファイルが途中のレイヤに残ってしまうかもしれません。
だとしたら、history に見えなくなっても意味ないですね。すみません。

投稿2017/02/23 15:33

編集2017/02/23 16:13
TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問