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ã®åèµ·åã¯äžèŠã§ãããã ãããã®èšå®ã¯æ°ããã³ã³ãããšãã«ãã«ã®ã¿é©çšãããæ¢åã®ã³ã³ããã«ã¯åœ±é¿ããŸããã
以äžã®è¡šã§ã¯ãå©çšå¯èœãªèšå®ãã©ã¡ãŒã¿ã«ã€ããŠèª¬æããŸãã
ãããã㣠| 説æ |
---|---|
httpProxy | HTTP_PROXY ãš http_proxy ç°å¢å€æ°ããã³ãã«ãåŒæ°ãèšå®ããŸãã |
httpsProxy | HTTPS_PROXY ãš https_proxy ç°å¢å€æ°ããã³ãã«ãåŒæ°ãèšå®ããŸãã |
ftpProxy | FTP_PROXY ãš ftp_proxy ç°å¢å€æ°ããã³ãã«ãåŒæ°ãèšå®ããŸãã |
noProxy | NO_PROXY ãš no_proxy ç°å¢å€æ°ããã³ãã«ãåŒæ°ãèšå®ããŸãã |
allProxy | ALL_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åœä»€ã䜿çšããªãã§ãã ããã代ããã«ãã«ãåŒæ°ã䜿çšããŠãã ããã
ãããã·ã®ç°å¢å€æ°ã䜿çšãããšãèšå®ãã€ã¡ãŒãžã«åã蟌ãŸããŠããŸããŸããå éšãããã·ã䜿çšããŠããå Žåããã®ãããã·ãã€ã¡ãŒãžããäœæãããã³ã³ããã§ã¢ã¯ã»ã¹ã§ããªãå¯èœæ§ããããŸãã
ãããã·èšå®ãã€ã¡ãŒãžã«åã蟌ãããšã¯ã»ãã¥ãªãã£ãªã¹ã¯ã䌎ããŸãããããã®å€ã«ã¯æ©å¯æ å ±ãå«ãŸããŠããå¯èœæ§ãããããã§ãã