Amazon Linux 2 또는 Amazon Linux 2023에서 Docker용 HTTP 프록시와 Amazon Elastic Container Service(Amazon ECS) 컨테이너 에이전트를 설정하고 싶습니다.
해결 방법
Amazon Linux 2 또는 Amazon Linux 2023에서 Docker 및 Amazon ECS 컨테이너 에이전트의 HTTP 프록시를 설정하려면 다음 단계를 완료하세요.
참고: 또한 사용자 데이터 스크립트와 함께 Amazon Elastic Compute Cloud(Amazon EC2) 사용자 데이터를 사용하여 시작 중에 환경 변수를 설정할 수 있습니다. 모든 Linux 버전에서 작동하는 사용자 데이터 스크립트는 Linux 컨테이너 인스턴스의 HTTP 프록시 구성을 참조하세요.
Amazon Linux를 사용하는 경우 Amazon Linux에서 Docker 및 Amazon ECS 컨테이너 에이전트의 HTTP 프록시를 설정하려면 어떻게 해야 하나요?를 참조하세요.
중요: Amazon Linux AMI(Amazon Linux 1이라고도 함)는 2023년 12월 31일에 서비스 종료되었습니다. 애플리케이션을 Amazon Linux 2023으로 업그레이드하는 것이 좋습니다.
IP 주소 및 프록시 서버 포트 저장
IP 주소 및 프록시 서버 포트를 저장하려면 다음 단계를 완료하세요.
- SSH를 사용하여 Amazon EC2 인스턴스에 연결합니다.
- 루트 사용자는 프록시 서버의 IP 주소와 포트를 나중에 환경 변수에 사용할 수 있도록 저장합니다. 예를 들면, 다음과 같습니다.
export PROXY_SERVER_IP=x.x.x.x
export PROXY_PORT=1234
Docker 데몬용 HTTP 프록시 설정
Docker 데몬용 HTTP 프록시를 설정하려면 다음 단계를 완료하세요.
-
sudo 권한으로 다음 명령을 실행합니다.
mkdir -p /etc/systemd/system/docker.service.d
cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT"
Environment="HTTPS_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT"
Environment="NO_PROXY=169.254.169.254,169.254.170.2"
EOF
참고: HTTP_PROXY는 ECS 컨테이너 에이전트를 인터넷에 연결하는 데 사용되는 HTTP 프록시의 소켓 주소(IPaddress:Port)입니다.
HTTP_PROXY 변수가 설정된 경우 NO_PROXY 변수를 169.254.169.254,169.254.170.2로 설정해야 합니다. 이 설정은 Amazon EC2 인스턴스 메타데이터, 작업에 대한 AWS Identity and Access Management(AWS IAM) 역할, 프록시의 Docker 데몬 트래픽을 필터링합니다.
-
디스크의 docker.service 변경으로 인해 유닛을 다시 로드하려면 다음 명령을 실행합니다.
systemctl daemon-reload
-
Docker를 다시 시작하려면 다음 명령을 실행합니다.
systemctl restart docker.service
참고: 이전 명령은 ECS 컨테이너 인스턴스의 ecs-agent를 포함하여 실행 중인 모든 컨테이너를 중지합니다.
-
Docker의 HTTP 프록시 설정을 확인하려면 다음 명령을 실행합니다.
docker info | grep -i proxy
참고: 명령 출력에는 HTTP 프록시와 HTTPS 프록시가 표시됩니다.
컨테이너 에이전트용 HTTP 프록시 설정
Docker 데몬용 HTTP 프록시를 설정하려면 다음 단계를 완료하세요.
-
기존 /etc/ecs/ecs.config 파일에 HTTP_PROXY 및 NO_PROXY 에이전트 구성 파라미터를 사용하는 프록시 구성을 포함합니다. 예를 들면, 다음과 같습니다.
cat <<EOF > /etc/ecs/ecs.config
HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT
NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock
EOF
-
1단계의 HTTP 구성을 ecs-agent에 적용하려면 다음 명령을 실행합니다.
systemctl restart ecs
참고: Amazon ECS에 최적화된 Amazon Machine Image(AMI)를 사용하는 경우 컨테이너 에이전트는 기본적으로 ecs-init를 통해 실행됩니다.
-
Docker 및 컨테이너 에이전트의 HTTP 프록시 설정을 확인하려면 다음 명령을 실행합니다.
docker inspect ecs-agent | grep -i proxy
참고: 프록시 설정이 명령 출력에 표시됩니다.
ecs-init용 HTTP 프록시 설정
ecs-init용 HTTP 프록시를 설정하려면 다음 단계를 완료합니다.
-
sudo 권한으로 다음 명령을 실행합니다.
mkdir -p /etc/systemd/system/ecs.service.d
cat <<EOF > /etc/systemd/system/ecs.service.d/http-proxy.conf
[Service]
Environment="HTTPS_PROXY=$PROXY_SERVER_IP:$PROXY_PORT/"
Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"
EOF
-
디스크의 docker.service 변경으로 인해 유닛을 다시 로드하려면 다음 명령을 실행합니다.
systemctl daemon-reload
-
1단계의 HTTP 구성을 ecs-agent에 적용하려면 다음 명령을 실행합니다.
systemctl restart ecs
참고: Docker와 컨테이너 에이전트의 구성은 현재 실행 중인 인스턴스에만 영향을 줍니다. 클러스터의 모든 인스턴스를 업데이트하려면 시작 구성을 생성한 다음 Auto Scaling 그룹을 사용하여 새 인스턴스를 시작합니다.
관련 정보
Amazon ECS 컨테이너 에이전트 업데이트
Amazon EC2 사용자 데이터를 사용한 컨테이너 인스턴스 부트스트랩