⛩️
Proxy環境でAmazonlinux2023からdocker pullする設定
Proxy環境でdocker pullする設定については様々な記事で手順が記載されている。
AWSのEC2においては、ECSのドキュメントに記載されている「HTTP proxy configuration」が参考になる。
上記記事に掲載されているスクリプトを起動スクリプト(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