またしてもプロキシで詰まったので忘れないようにメモ。
proxy環境下でdockerでoracle database 12CR2のイメージをビルドするまで。
結論(今回の原因)
環境変数 proxy をよく確認しよう。
「docker-machine create --engine-env http_proxy=hogehoge
」と
「docker-machine 作成後に machine 内で export http_proxy=hogehoge
」
は似ているようで違う
環境
- docker toolbox (Windows 10 Pro)
- Docker version 17.03.1-ce
- 会社のプロキシ環境下
- docker-machine に Tera Term から ssh接続
基本的にdocker-machien 内での操作がメインになります
準備
- 公式のデータベースイメージをダウンロード
- 公式で配布されているdockerfileを持ってくる
ここら辺は他の方の記事読んでください。。。
(そのうちここでもちゃんと記載しますごめんなさい)
実行
$ cd /ファイルパス/docker-images-master/OracleDatabase/dockerfiles
$ sh buildDockerImage.sh -v 12.2.0.1 -e
-v はバージョン、-e はエンタープライズ
始めに容量などのチェックが行われた後、dockerfileによるbuildが始まる。
今回は -e を指定したので、dockerfiles/12.2.0.1/Dockerfile.ee を
元にbuildされる
結果
Step 7/16 : RUN chmod ug+x $INSTALL_DIR/*.sh && sync && $INSTALL_DIR/$CHECK_SPACE_FILE && $INSTALL_DIR/$SETUP_LINUX_FILE
---> Running in 97d7febe3527
Loaded plugins: ovl
http://yum.oracle.com/repo/OracleLinux/OL7/UEKR4/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed connect to yum.oracle.com:80; Operation now in progress"
Trying other mirror.
まさかの繋がらないエラー。
原因
machine内で環境変数 http_proxy や https_proxy が設定されていなかった。
(docker-machine create --engine-env http_proxy=hogehoge
でされてると思ってた)
環境変数は echo $http_proxy
とか printenv
で確認。
対処
ごり押しで環境変数設定。
export http_proxy=http://proxy.hogehoge.jp:8080
export http_proxy=http://proxy.hogehoge.jp:8080
設定した後上記のシェルスクリプトをもう一度実行。
最終結果
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 12.2.0.1-ee e79810d7c982 About an hour ago 14.8 GB
oraclelinux 7-slim f005b5220b05 6 weeks ago 114 MB
無事に入ってくれました!
最後
環境変数ゎ大事。
docker-machien create --engine-env http_proxy=hogehoge
で設定される環境変数は、docker のエンジンに対してのみ有効
つまりmachine内でのdockerコマンドに対してのみ適用される。
(オプションの名前が engine-env だから当然でしたね。。。)