개발새발 로그

정말 안간단한 AWS EC2 Ubuntu 환경에 Docker 설치하기 + EC2 직렬콘솔 본문

카테고리 없음

정말 안간단한 AWS EC2 Ubuntu 환경에 Docker 설치하기 + EC2 직렬콘솔

이즈흐 2025. 12. 29. 21:10

📖들어가며...

이전에 Window 환경에서 도커를 설치해보았다.

이건 사실 로컬 테스트 용이고,

나는 AWS EC2에 서버 하나를 배포했고,

AWS EC2 Ubuntu 환경에 Docker를 설치해 활용해보고자 하고 있다.

 

참고로 Ubuntu의 버전은 아래처럼 해야한다.

 


1. EC2 연결하기(직렬 콘솔)

먼저 AWS EC2에 접속해야한다.

나는 이전에 NestJS 프로젝트를 만들면서 vscode에서 ssh연결로 진행했었다.

근데 이걸 vscode를 열어서 하자니 개발작업이 아닌데 프로젝트 여는 것도 이상하고, EC2에 직렬 콘솔이라는 기능이 있는데 이것도 배워볼겸 직렬 콘솔을 사용하고자 했다.

 

직렬 콘솔을 사용 설정하고 들어가면 처음에 아래처럼 뜬다.

 

처음 사용해봐서 당황했다.

직렬 콘솔을 사용하려면 OS 사용자 이름과 해당 사용자 이름에 대한 비밀번호가 있어야한다.

이전에 ssh 연결을 하면서 나는 pem 파일 키를 사용해서 연결을 했기 때문에

OS 사용자 이름이라던지 비밀번호 같은 건 전혀 없었다.

 

그래서 직렬 콘솔을 사용하려면 초기 세팅이 필요하다고 한다.

어쩔 수 없이 pem 파일 키를 가지고 ssh 연결을 해주고 난 뒤 아래 과정을 실행해준다.

 

1. ssh 연결 진행

ssh -i my-key.pem ubuntu@EC2_IP
//파일 세팅 해놓고 자신의 IP 쓰면 됨

 

2. 비밀번호 설정하기

sudo passwd ubuntu

나는 whoami를 해보니 OS 사용자 이름이 ubuntu였다.

그래서 해당 이름으로 비밀번호를 설정해주면 된다.

 

3. 재부팅하기

sudo reboot

 

 

그리고 다시 AWS EC2 직렬 콘솔로 들어와서 아래처럼 설정해준 이름과 비밀번호를 입력하면 연결된다.

 

 

 


2. 이전 버전 제거하기

위처럼 공식문서에서도 Docker 설치 진행하기 전에 제거하라고 나와있다.

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

가끔 에러가나는 이슈가 있어서 하는 작업이라고 한다.

 

그리고 아래 명령어를 모두 실행하면된다.

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc


sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

 

이제 도커를 설치하자

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

설치를 완료했다면 아래 명령어를 입력해서 정상적으로 실행되는지 체크하자

sudo docker run hello-world

 

 

 


3. 관리자 권한 없이 Docker 실행하기

sudo 명령어를 제외하고 실행하면 Docker가 실행되지 않을 것이다.

이 명령어를 생략할 수 있는 방법이 있다해서 설정하려고 한다.

 

 

1. 현 사용자(ubuntu) Id를 docker group에 포함

sudo usermod -aG docker ${USER}

${USER} : 현재 유저

 

2. 터미널 끊고 다시 ssh로 터미널 접속(로그인)

 

3. 현 ID가 docker group에 포함되어 있는지를 확인

id -nG

4. 이제 sudo 없이 docker 명령을 바로 내릴 수 있음

docker

 


docker-compose 설치하기

하나의 컨테이너를 실행하는 docker 명령과 함께 

여러 개의 컨테이너를 함께 실행하고 종료할 수 있는 dokcer Compose가 있다.

 

사실 도커를 설치하면 docker compose도 이미 설치가 되어있다.

하지만 공식가이드나 여러 블로그 글을 보면 docker compose를 별도로 설치, standalone으로 설치를 해서 이 기반으로 사용법을 설명하는 경우가 많다.

 

그래서 나도 docker-compose를 별도로 설치해보고 세팅하고자 한다.

나는 리포지토리를 사용하는 방법으로 설치했다.

현재 검색해서 나오는 docker compose 설치 방법이 공식문서에서 레거시 되었다.
그래서 공식문서를 보니 플러그인을 설치해주면 된다고 한다.

1. docker desktop을 설치하는 방법이 있는데 이 방법은 X

Docker Desktop은 구조적으로:
데스크톱/로컬 개발용이고,
GUI + 가상머신 포함되어있고,
서버에는 필요 없는 것 투성이다.
EC2 (리눅스 서버)에서는 완전한 오버엔지니어링 + 낭비


2. Docker Compose “수동 설치”를 쓰면 안 되는 이유
❗ 여기서 말하는 수동 설치 = GitHub에서 바이너리 직접 curl 받는 방식

이 방식의 문제:
   1. OS 업데이트와 완전히 분리 보안 패치 자동 적용 ❌ 버전 관리 전부 수동
    👉 서버 운영에서 가장 위험한 패턴
   2. Docker Engine 버전과 호환성 깨짐
   3. 표준 경로가 아니라 장애 발생
   4. 서버 재설치 / 확장 시 재현 불가

사실 이전에 사용하던 방법이 레거시가 되고, 어떤 방법을 해야할지 몰라 GPT를 사용해서 진행했다.

 

 

 

참고사항

레거시한 방법으로 하게 되면 이래처럼 별도로 설치한 docker compose와 기존 설치된 docker compose가 다르다고 한다.

위처럼 docker-compose 로 시작하면 별도로 설치한 docker compose이다.

하이픈을 뺀 docker compose로 시작하면 기존에 설치된 docker compose이고, 

 

지금 공식문서를 봤을 때는 모두 docker compose로 사용하고 있는 걸로 보인다.(수동 설치든 뭐든 모두)

 

 

 

 


📘마치며..

사실 간단하게 끝날 것 같았는데 docker 문서의 업데이트로 자료들이 레거시가 되면서 난항을 겪었다.

어떤 방법이 옳은 것인지 판단이 잘 되지 않았기 때문이다..

일단 GPT의 도움으로 최선의 방법을 사용하게 되었다.

 

만약 이 방법이 옳지않았다면 추후 도커를 사용할 때 문제가 발생할 것이다.

그럼 그 문제를 해결하고, 다시 기록해서 포스팅 하려고 한다.

 

 

728x90
반응형
LIST