본문 바로가기
Devops

AWS EC2 서버에 Docker 설치하기

by heekng 2023. 11. 5.
반응형

AWS EC2 서버에 Docker 설치하기

지금까지 수십번 새 서버를 구축하면서 도커를 설치하는 과정을 매번 검색하는게 번거로워 정리합니다.

Docker & DockerCompose 설치 및 설정

sudo yum install docker -y

yum 명령어를 이용해 Docker을 설치합니다.

  • -y: Docker을 설치하면서 나타나는 모든 yn 선택에 대해 y를 입력하게 합니다.
sudo usermod -aG docker ec2-user

ec2-user 사용자를 docker 그룹에 추가합니다.

  • sudo: 사용자가 속한 그룹을 수정하기 위해 root 권한으로 명령어를 실행합니다.
  • usermod: 특정 사용자에 대한 시스템 구성을 수정합니다.
  • -a: === --append, 사용자가 속한 그룹 목록에 그룹을 추가합니다.
  • -G: === --groups, 다음에 들어올 인수가 그룹임을 표시합니다. 사용자가 속한 보조 그룹목록을 수정하기 위해 대문자를 사용합니다.
  • ec2-user: 수정하려는 사용자입니다. 만약 수정하려는 사용자가 다르다면 해당 사용자를 입력합니다.
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

/usr/local/bin/docker-compose 경로에 Docker-Compose 실행 파일을 설치합니다.
해당 경로에 docker-compose가 위치해야 어디서든 명령어를 실행할 수 있습니다.

sudo chmod +x /usr/local/bin/docker-compose

위에서 설치한 docker-compose 파일에 실행권한을 부여합니다.

sudo service docker start

Docker daemon을 실행합니다.

sudo service docker status

docker info

Docker의 실행 상태를 확인합니다.
docker info 명령어는 Docker의 상태를 확인합니다

컨테이너 로그 저장 주기 변경

도커 컨테이너 안에서 CONSOLE로 output되는 로그는 컨테이너 볼륨을 초기화 하지 않으면 계속 남아있게 된다.
만약 컨테이너를 자주 켜고끄는 작업이 이루어지지 않는 경우 로그만 수십기가를 잡아둘 수 있습니다.

sudo vi /etc/docker/daemon.json

/etc/docker/daemon.json

{
    "log-opts": {
        "max-size": "100m",
        "max-file": "10"
    }
}

위 예시의 경우 로그 파일의 크기를 100m으로, 총 10개까지 저장하는 예시입니다.

sudo service docker restart

도커 데몬 적용을 위해 도커를 재시작합니다.

번외) 도커 루트 경로 변경

서버를 구성할 때에는 여러 상황이 존재합니다.
예를들어 서버의 메인 스토리지를 사용하지 않고, 대용량 스토리지를 마운트하여 사용할 수 있습니다.
Docker은 이미지, 컨테이너, 볼륨 등으로 인해 사용자가 생각하는 용량보다 더 많은 용량을 사용할 수 있기 때문에 해당하는 리소스를 저장하는 경로를 수정할 수 있습니다.

docker info | grep "Root Dir"

# Docker Root Dir: /var/lib/docker

Docker의 root 디렉토리를 조회합니다.
기본값은 /var/lib/docker입니다.

sudo service docker stop

현재 실행되고 있는 Docker Daemon 프로세스를 종료합니다.

sudo vi /etc/docker/daemon.json

daemon.json

{
    "data-root": "/mount-dir/docker-root"
}

/etc/docker경로에 daemon.json파일을 생성하고, 새로운 Docker Root 디렉토리를 지정합니다.
예제의 경우 /mount-dir/docker-root 경로를 생성하고, 해당 경로를 지정했습니다.

sudo service docker start

Docker 서비스를 재실행합니다.

반응형