ごだいぶろぐ 絶対大丈夫じゃないSEのぼやき

頭が封印解除しているシステムエンジニアのブログです。カードキャプターさくら クリアカード編の感想記事を定期更新中

【Docker】社内プロキシ環境下でDocker Hubからイメージをpullしようとすると失敗する

スポンサーリンク

Cent OS7の構築を完了した。

社内プロキシの設定をしてyumアップデートもできた。

Dockerのインストールも完了した。

でもDocker Hubからイメージを持ってこようとすると失敗する。

(ノД`)



でハマったので解決までの流れをば。

Dockerのインストール

(1) dockerリポジトリの追加

# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo


(2) yumパッケージインデックスの更新

# yum makecache fast


(3) dockerの最新版インストール

# yum install docker-ce


(4) Dockerデーモンの起動

# systemctl start docker


(5) Dockerデーモンの常時起動設定

# systemctl enable docker


全部で所有時間5分位。
コマンドさえ分かっていれば爆速で構築できちゃうDockerさん。

コンテナ起動

そんでは早速hello worldイメージからコンテナを起動させましょう、というところでエラー…

# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: tls: oversized record received with length 20527.See 'docker run --help'.


エラーの内容を要約すると、
「ローカルにそんなイメージはないぜ!」
「そして気を効かせてdocker hubから落としてこようとしたけど接続できなかったぜ!」

とのこと。プロキシの設定はしているんだが?(半ギレ)



うだうだしてたらこちらのサイトが参考になった。感謝です。



どうやらdaemonをsystemdで起動している場合は、/etc/systemd/system/配下にdocker.service.dディレクトリを作ってプロキシ用のコンフィグを作ってあげないといけないらしい。



要は、OSだけでなくDockerデーモン自体にプロキシの設定をしないといけない



めんどくさいけど配置するだけで認識するのはすごい。



ということでディレクトリとコンフィグを作りませう。

# mkdir /etc/systemd/system/docker.service.d
# vi /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/"


忘れずにデーモンのリロードと再起動。

# systemctl deamon-reload
# systemctl restart docker


リベンジ成功!

# docker run hello-world
Unable to find image 'hello-world:latest' locally
Hello from Docker!
This message shows that your installation appears to be working correctly.(略)


最近もWindowsでhostsとプロキシの優先順位だなんだとプロキシにはいじめられております。とりあえずネットワーク周りで動かない場合は此奴を疑おう…



次はいよいよDocker上でZabbixを動かすぞい。



おしまい。