【Docker】Docker ~ Proxy環境下でDockerを使用する ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/11/24/000000
https://dk521123.hatenablog.com/entry/2023/11/23/000000

の Docker 版。小ネタ。

目次

【0】Docker の Proxy設定について
【1】Dockerサービス用のProxy設定手順
 1)Docker用の 設定ファイルを追加する
 2)設定を反映
 3)確認
【2】Dockerクライアント用のProxy設定手順]
【3】その他Tips
 1)docker run -e
 2)Dockerfile / ENV
 3)docker compose / environment

【0】Docker の Proxy設定について

* 設定には、以下の2点がある
 [1] Dockerサービス用のProxy設定
 [2] Dockerクライアント用のProxy設定

【1】Dockerサービス用のProxy設定手順

* 日本語の以下の公式サイトに記載されている

https://docs.docker.jp/engine/articles/systemd.html#http

1)Docker用の 設定ファイルを追加する

sudo mkdir -p /etc/systemd/system/docker.service.d

sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
# 以下の「設定例:/etc/systemd/system/docker.service.d/http-proxy.conf」を参照
# 192.168.1.12:3128 部分は、各自のProsyサーバの設定に直すこと

設定例:/etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://192.168.1.12:3128/" "HTTPS_PROXY=http://192.168.1.12:3128/" "NO_PROXY=localhost,127.0.0.0/8"

Tips: teeコマンドを利用する

* 以下の関連記事で扱った teeコマンド で作ると楽

https://dk521123.hatenablog.com/entry/2023/11/08/000000

echo -e "[Service]\nEnvironment=\"HTTP_PROXY=http://192.168.1.12:3128/\"" | sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf
echo -e "Environment=\"HTTPS_PROXY=http://192.168.1.12:3128/\"" | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf
echo -e "Environment=\"NO_PROXY=localhost,127.0.0.0/8\"" | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf

# 確認
cat /etc/systemd/system/docker.service.d/http-proxy.conf

使用上の注意

* Typoに注意
 => 「NO_PROXY(OK)」を「NOPROXY(ダメ)」ってして、ハマった。

2)設定を反映

# デーモンリロード
sudo systemctl daemon-reload

# 再起動
sudo systemctl restart docker

# 確認(Runningであること)
sudo systemctl status docker

3)確認

# Proxyの設定値(3点)が出てればOK!
sudo docker info

# Proxyの設定値(3点)が出てればOK!
systemctl show --property=Environment docker
systemctl show --user --property=Environment docker

【2】Dockerクライアント用のProxy設定手順

* 日本語の以下の公式サイトに記載されている

https://docs.docker.jp/network/proxy.html

* 以降の設定をすれば、以下の公式サイトの記述通り。
====
新しいコンテナの作成もしくは起動時に、
環境変数はコンテナ内へ自動的に設定されます
====

1)Docker用の 設定ファイルを追加する

mkdir -p ~/.docker

vi ~/.docker/config.json
# 以下の「設定例:~/.docker/config.json」を参照
# 192.168.1.12:3128 部分などは、各自のProsyサーバの設定に直すこと

設定例:~/.docker/config.json

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://192.168.1.12:3128",
     "httpsProxy": "http://192.168.1.12:3128",
     "noProxy": "localhost,127.0.0.0/8"
   }
 }
}

【3】その他Tips

1)docker run -e

* docker run -e (--env) [環境変数] を利用する

サンプル

docker run \
  -e HTTP_PROXY=http://192.168.1.12:3128 \
  -e HTTPS_PROXY=http://192.168.1.12:3128 \
  -e NO_PROXY="*.test.example.com,localhost,127.0.0.1" \
  hello-world

2)Dockerfile / ENV

* Dockerfile の ENVで環境変数を設定する

サンプル

FROM nginx:latest

# ★注目★
ENV https_proxy "http://192.168.1.12:3128"
ENV http_proxy "http://192.168.1.12:3128"

RUN apt-get -y update && apt-get -y upgrade 

3)docker compose / environment

* docker compose の environmentで環境変数を設定する

サンプル

version: "3"

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "8443:443"
    # ★注目★
    environment:
      HTTP_PROXY: "http://192.168.1.12:3128"
      HTTPS_PROXY: "http://192.168.1.12:3128"
      NO_PROXY: "*.test.example.com,localhost,127.0.0.1"

参考文献

https://scrapbox.io/gyarasu/%5Bdocker%5D_Proxy%E7%92%B0%E5%A2%83%E4%B8%8B%E3%81%A7docker_pull%E3%81%AA%E3%81%A9%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B
https://qiita.com/homoluctus/items/00eebe3c36a9591c3803
https://gotohayato.com/content/563/

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/02/25/000000
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / docker imageコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000
Proxy環境下でdocker pullしたらエラー
https://dk521123.hatenablog.com/entry/2024/02/08/144941
Linux で Proxy を設定するには
https://dk521123.hatenablog.com/entry/2023/11/24/000000
SBT ~ Proxy環境下でSBTを使用する ~
https://dk521123.hatenablog.com/entry/2023/11/23/000000
teeコマンド
https://dk521123.hatenablog.com/entry/2023/11/08/000000