Skip to Content

Docker CLIでプロキシサヌバヌを䜿甚する

このペヌゞでは、コンテナ内で環境倉数を䜿甚しおDocker CLIにプロキシを蚭定する方法に぀いお説明したす。

このペヌゞでは、Docker Desktopのプロキシ蚭定方法に぀いおは説明しおいたせん。Docker DesktopでのHTTP/HTTPSプロキシ蚭定の手順に぀いおは、Docker Desktopでのプロキシ蚭定 を参照しおください。

Docker Desktopを䜿甚せずにDocker Engineを実行しおいる堎合は、Dockerデヌモンでプロキシサヌバヌを䜿甚する蚭定 を参照し、Dockerデヌモンdockerd自䜓のプロキシサヌバヌ蚭定方法を確認しおください。

コンテナでHTTP、HTTPS、たたはFTPプロキシサヌバヌを䜿甚する必芁がある堎合、以䞋の方法で蚭定できたす。

残念ながら、Webクラむアントがプロキシ環境倉数をどのように凊理するべきか、たたそれを定矩するフォヌマットに関する暙準は存圚したせん。

これらの倉数の歎史に぀いお興味がある堎合、GitLabチヌムによるブログ蚘事をご芧くださいWe need to talk: Can we standardize NO_PROXY? 。

Dockerクラむアントの蚭定

Dockerクラむアントのプロキシ蚭定は、~/.docker/config.jsonにあるJSON構成ファむルを䜿甚しお远加できたす。ビルドやコンテナは、このファむルに指定された蚭定を䜿甚したす。

{ "proxies": { "default": { "httpProxy": "http://proxy.example.com:3128", "httpsProxy": "https://proxy.example.com:3129", "noProxy": "*.test.example.com,.example.org,127.0.0.0/8" } } }
⚠

プロキシ蚭定には機密情報が含たれるこずがありたす。䟋えば、いく぀かのプロキシサヌバヌは認蚌情報をURLに含める必芁がある堎合があり、あるいは䌚瀟の環境におけるIPアドレスやホスト名が露出する可胜性がありたす。

環境倉数はコンテナの蚭定にプレヌンテキストずしお保存されるため、リモヌトAPI経由で確認したり、docker commitコマンドを䜿甚しおむメヌゞにコミットされた堎合に怜査される可胜性がありたす。

ファむルを保存するず蚭定が有効になり、Dockerの再起動は䞍芁です。ただし、この蚭定は新しいコンテナずビルドにのみ適甚され、既存のコンテナには圱響したせん。

以䞋の衚では、利甚可胜な蚭定パラメヌタに぀いお説明したす。

プロパティ説明
httpProxyHTTP_PROXY ず http_proxy 環境倉数およびビルド匕数を蚭定したす。
httpsProxyHTTPS_PROXY ず https_proxy 環境倉数およびビルド匕数を蚭定したす。
ftpProxyFTP_PROXY ず ftp_proxy 環境倉数およびビルド匕数を蚭定したす。
noProxyNO_PROXY ず no_proxy 環境倉数およびビルド匕数を蚭定したす。
allProxyALL_PROXY ず all_proxy 環境倉数およびビルド匕数を蚭定したす。

これらの蚭定はコンテナのプロキシ環境倉数を蚭定するためのものであり、Docker CLIやDockerデヌモン自䜓のプロキシ蚭定には䜿甚されたせん。CLIおよびデヌモンのプロキシ蚭定に぀いおは、環境倉数 およびDockerデヌモンでプロキシサヌバヌを䜿甚する蚭定 のセクションを参照しおください。

プロキシ蚭定でコンテナを実行する

コンテナを起動する際、プロキシに関連する環境倉数は、~/.docker/config.jsonに蚭定されたプロキシ蚭定を反映したす。

䟋えば、前のセクションで瀺したプロキシ蚭定を䜿甚しおいる堎合、実行されるコンテナの環境倉数は次のように蚭定されたす。

$ docker run --rm alpine sh -c 'env | grep -i _PROXY' https_proxy=http://proxy.example.com:3129 HTTPS_PROXY=http://proxy.example.com:3129 http_proxy=http://proxy.example.com:3128 HTTP_PROXY=http://proxy.example.com:3128 no_proxy=*.test.example.com,.example.org,127.0.0.0/8 NO_PROXY=*.test.example.com,.example.org,127.0.0.0/8

プロキシ蚭定でビルドする

ビルドを実行するずき、プロキシに関連するビルド匕数はDockerクラむアント構成ファむルのプロキシ蚭定に基づいお自動的に蚭定されたす。

前のセクションで瀺したプロキシ蚭定を䜿甚しおいる堎合、ビルド䞭の環境倉数は次のように蚭定されたす。

$ docker build \ --no-cache \ --progress=plain \ - <<EOF FROM alpine RUN env | grep -i _PROXY EOF
#5 [2/2] RUN env | grep -i _PROXY #5 0.100 HTTPS_PROXY=https://proxy.example.com:3129 #5 0.100 no_proxy=*.test.example.com,.example.org,127.0.0.0/8 #5 0.100 NO_PROXY=*.test.example.com,.example.org,127.0.0.0/8 #5 0.100 https_proxy=https://proxy.example.com:3129 #5 0.100 http_proxy=http://proxy.example.com:3128 #5 0.100 HTTP_PROXY=http://proxy.example.com:3128 #5 DONE 0.1s

デヌモンごずにプロキシ蚭定を構成する

~/.docker/config.json内のproxiesセクションのdefaultキヌは、クラむアントが接続するすべおのデヌモンに察しおプロキシ蚭定を構成したす。個々のデヌモンに察しおプロキシを構成する堎合は、defaultキヌの代わりにデヌモンのアドレスを䜿甚したす。

次の䟋では、デフォルトのプロキシ蚭定ず、アドレスtcp://docker-daemon1.example.comに察するno-proxyオヌバヌラむドを構成しおいたす。

{ "proxies": { "default": { "httpProxy": "http://proxy.example.com:3128", "httpsProxy": "https://proxy.example.com:3129", "noProxy": "*.test.example.com,.example.org,127.0.0.0/8" }, "tcp://docker-daemon1.example.com": { "noProxy": "*.internal.example.net" } } }

CLIでプロキシを蚭定する

Dockerクラむアントを構成する代わりに、docker buildやdocker runコマンドを実行する際に、コマンドラむンでプロキシ蚭定を指定するこずもできたす。

コマンドラむンでのプロキシ蚭定は、ビルドでは--build-argフラグ、コンテナ実行時には--envフラグを䜿甚しお指定したす。

docker buildコマンドで䜿甚できるすべおのプロキシ関連のビルド匕数のリストに぀いおは、Predefined ARGs を参照しおください。これらのプロキシ倀はビルドコンテナ内でのみ䜿甚可胜であり、ビルドの出力には含たれたせん。

ビルド時のプロキシ蚭定を環境倉数ずしお䜿甚する

ビルドのプロキシ蚭定には、ENV Dockerfile呜什を䜿甚しないでください。代わりにビルド匕数を䜿甚しおください。

プロキシの環境倉数を䜿甚するず、蚭定がむメヌゞに埋め蟌たれおしたいたす。内郚プロキシを䜿甚しおいる堎合、そのプロキシがむメヌゞから䜜成されたコンテナでアクセスできない可胜性がありたす。

プロキシ蚭定をむメヌゞに埋め蟌むこずはセキュリティリスクを䌎いたす。これらの倀には機密情報が含たれおいる可胜性があるためです。

Last updated on