⛩️

Proxy環境でAmazonlinux2023からdocker pullする設定

2023/08/20に公開

Proxy環境でdocker pullする設定については様々な記事で手順が記載されている。
AWSのEC2においては、ECSのドキュメントに記載されている「HTTP proxy configuration」が参考になる。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/http_proxy_config.html

上記記事に掲載されているスクリプトを起動スクリプト(cloud-initなど)として設定すれば、諸々いい感じに設定される。
実運用にあたって修正、追記した箇所をメモしておく。

修正箇所

https向けProxyアドレスをhttpに修正

# AmazonLinux2向けの分岐だけど、Amazonlinux2023にも前方一致でマッチするので動く
if [ $OS == "AL2" ] && [ ! -f /var/lib/cloud/instance/sem/config_docker_http_proxy ]; then
    mkdir /etc/systemd/system/docker.service.d
    cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://$PROXY_HOST:$PROXY_PORT/"

# HTTPS向けにもProxyはHTTPで受け付ける場合はsを削除してhttpとする
Environment="HTTPS_PROXY=https://$PROXY_HOST:$PROXY_PORT/"
Environment="NO_PROXY=169.254.169.254,169.254.170.2"
EOF
    systemctl daemon-reload
    if [ "$(systemctl is-active docker)" == "active" ] 
    then 
        systemctl restart docker
    fi 
    echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_docker_http_proxy
fi

dnf向けProxy設定

# Amazonlinux2023はdnfに切り替わっている
# yumと書かれている所をdnfに書き換える
# Set dnf HTTP proxy
if [ ! -f /var/lib/cloud/instance/sem/config_dnf_http_proxy ]; then
    echo "proxy=http://$PROXY_HOST:$PROXY_PORT" >> /etc/dnf.conf
    echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_dnf_http_proxy
fi

追記箇所

ユーザ向けProxy設定

Proxy設定はサービスやdnfだけでなくユーザ向けにも必要なので、ユーザ向けProxy設定として以下を追記した。

if [ ! -f /var/lib/cloud/instance/sem/config_user_http_proxy ]; then
    echo "http_proxy=http://$PROXY_HOST:$PROXY_PORT" >> /etc/environment
    echo "https_proxy=http://$PROXY_HOST:$PROXY_PORT" >> /etc/environment
    echo "no_proxy=169.254.169.254,169.254.170.2" >> /etc/environment
    echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_user_http_proxy
fi

Discussion