SSM으로 Amazon Linux 2023에서 docker 설치하기
SSM(Amazon Systems Manager)으로 Amazon Linux 2023에서 docker 설치하는법에 대해 소개하려고 한다.
SSH로 접속해서 docker 설치를 진행해도 되지만, 내가 docker를 설치하려고하는 인스턴스의 SSH 인바운드 접속권한을 일부러 막아놓았다.
SSM으로 하는 방법도 알아놓으면 두고두고 도움이 될 것이다. 아님말고
먼저 SSM으로 접속하려면 EC2 인스턴스에 AmazonSSMManagedInstanceCore 정책이 연결된 IAM 역할이 적용되어 있어야 한다.
또한 IAM 역할에 아래 정책을 연결해 접근 권한을 부여해주어야 한다.
- YOUR_REGION : region명 (ex. ap-northeast-2)
- YOUR_INSTANCE_ID : 배포하고자하는 인스턴스 ID
- YOUR_AWS_ACCOUNT_ID : aws 계정 ID (콘솔 우측 상단에 12자리 숫자로 되어있다)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSMSessionManager",
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ec2:YOUR_REGION:YOUR_AWS_ACCOUNT_ID:instance/YOUR_INSTANCE_ID",
"arn:aws:ssm:*:*:document/SSM-SessionManagerRunShell"
]
},
{
"Sid": "AllowSSMSessionControl",
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession",
"ssm:DescribeSessions",
"ssm:GetConnectionStatus"
],
"Resource": "arn:aws:ssm:*:*:session/${aws:username}-*"
}
]
}
인스턴스 및 IAM에 정책 연결하는 법은 아래 링크를 참고바란다.
AWS CLI로 SSM에 접근 할 것이기에, AWS CLI 설치가 필요하다.
brew가 설치되어있다면 awscli를 쉽게 설치할 수 있다.
brew install awascli설정 관련해서는 아래 링크 참고바란다. (목차에서 "설정" 클릭)
내가 원하는 인스턴스에 SSM으로 접속하기 위해서는 아래 명령을 사용하면 된다.
- YOUR_REGION : region명 (ex. ap-northeast-2)
- YOUR_INSTANCE_ID : 배포하고자하는 인스턴스 ID
aws ssm start-session -target YOUR_INSTANCE_ID --region YOUR_REGION

처음 AWS CLI를 설치하자마자 SSM에 접속을 시도하면 아래 에러메시지를 접하게 될 것이다.

Session Manager 플러그인이 설치되어 있지 않다는 에러이다. AWS CLI로 SSM 세션을 시작하려면 별도의 플러그인이 필요하다.
brew install --cask session-manager-plugin

성공적으로 설치가 되었음을 확인할 수 있다.

다시 명령어를 실행하면 접속이 됨을 확인할 수 있다.

ls 명령어를 입력했더니 세션내에서 잘 동작함을 확인할 수 있다.
Amazon Linux 2023은 dnf 패키지 관리자를 사용하며 기본 리포지토리에 Docker가 포함되어 있어 설치가 매우 간단하다.
# 1. 시스템 패키지 최신 상태로 업데이트
sudo dnf update -y
# 2. Docker 패키지 설치
sudo dnf install docker -y
# 3. Docker 서비스 시작
sudo systemctl start docker
# 4. (권장) 부팅 시 Docker 자동 시작 설정
sudo systemctl enable docker

위의 Complete! 가 보인다면 Docker 설치가 완료된 것이다. 시간이 좀 걸리니 참을성 있게 기다리면 된다.

위 명령어들을 입력하고 exit 을 입력해 종료했다.
Amazon Linux 2는 yum과 amazon-linux-extras를 사용한다.
# 1. 시스템 패키지 최신 상태로 업데이트
sudo yum update -y
# 2. amazon-linux-extras를 사용해 Docker 설치
sudo amazon-linux-extras install docker -y
# 3. Docker 서비스 시작
sudo service docker start
# 4. (권장) 부팅 시 Docker 자동 시작 설정
sudo chkconfig docker onDocker를 설치한 직후에는 root나 docker 그룹의 사용자만 docker 명령을 실행할 수 있다. SSM 세션의 기본 사용자인 ssm-user가 sudo 없이 docker 명령을 사용하려면 이 사용자를 docker 그룹에 추가해야 한다.
# 1. 'ssm-user'를 'docker' 그룹에 추가
sudo usermod -aG docker ssm-user변경 사항을 적용하기 위해 exit 을 터미널에 입력하여 SSM 세션을 종료한다.
새로운 SSM 세션을 시작한 후, 다음 명령어를 실행하여 sudo 없이도 Docker가 잘 작동하는지 확인한다.
# sudo 없이 docker 정보 확인
docker info"permission denied" 오류가 뜨지 않고 Docker 정보가 보이면 권한 추가가 잘 된 것이다.
