2024년 8월 12일 월요일

EC2 서버 Docker 및 Docker Compose 설치, 삭제 후 재설치

 Amazon Linux 2023 EC2 서버에 도커를 설치하고 자동 재실행 설정하는 절차는 다음과 같다.

1. Amazon Linux 2023 EC2 서버에 도커 설치 및 서비스로 자동 재실행 설정

도커 설치

  1. EC2 인스턴스에 SSH 접속한다.

    ssh -i <your-key-pair.pem> ec2-user@your-ec2-instance-public-dns
    
  2. 도커를 설치한다.

    sudo yum update -y
    sudo yum install docker -y
    
  3. 도커 서비스를 시작하고 부팅 시 자동으로 시작되도록 설정한다.

    sudo systemctl start docker
    sudo systemctl enable docker
    
  4. 도커가 정상적으로 설치되었는지 확인한다.

    docker --version
    

도커 자동 재실행 설정

  1. 도커 서비스가 재부팅 시 자동으로 재실행되도록 설정한다.

    sudo systemctl enable docker
    
  2. 컨테이너가 재부팅 시 자동 재시작되도록 Dockerfile 또는 docker run 명령어에 --restart 옵션을 추가한다.

    docker run -d --restart unless-stopped <image-name>
    

2. Docker Compose 설치

Docker Comopose 설치

  1. Docker Compose 바이너리를 다운로드한다.

    sudo curl -SL "<https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$>(uname -m)" -o /usr/local/bin/docker-compose
    
  2. 바이너리에 실행 권한을 부여한다.

    sudo chmod +x /usr/local/bin/docker-compose
    
  3. 심볼릭 링크를 생성하여 Docker Compose 명령어를 사용할 수 있도록 한다.

    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
  4. Docker Compose가 정상적으로 설치되었는지 확인한다.

    docker-compose --version
    

Docker Compose 서비스 자동 재시작 설정

  1. docker-compose.yml 파일에 restart 정책을 추가하여 컨테이너가 자동으로 재시작되도록 설정한다. 설정 샘플:

    version: '3'
    services:
      web:
        image: nginx
        ports:
          - "80:80"
        restart: unless-stopped
    
  2. Docker-compose 실행

    docker-compose up -d
    

3. Docker 재설치

docker.service가 의존하는 다른 서비스가 실패하거나 알 수 없는 이유로 Docker 서비스를 시작할 수 없는 경우, Docker를 제거하고 다시 설치하는 것도 하나의 방법이다.

  1. Docker 제거

    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    
  2. 위의 도커 설치 참고하여 재설치

<aside> 💡 의존성 확인 및 문제 해결

docker.service의 의존성을 확인하여 관련된 서비스들이 모두 제대로 작동하는지 확인한다.

sudo systemctl list-dependencies docker.service
  • 원인 확인

journalctl -xe 명령어를 사용하여 자세한 오류 메시지를 확인한다.

sudo journalctl -xe

이 명령어는 최근 시스템 로그를 표시하여 Docker 서비스가 왜 실패했는지에 대한 더 구체적인 정보를 제공한다.

  • Docker 서비스의 상태를 확인한다.
sudo systemctl status docker
  • Docker가 의존하는 서비스 중 주로 containerd 서비스가 문제일 수 있다.

containerd 서비스 상태 확인 및 재시작

sudo systemctl status containerd
sudo systemctl restart containerd

이후 Docker 서비스를 다시 시작해본다.

sudo systemctl start docker

</aside>

4. Docker Compose 삭제

현재 설치된 방식에 따라 삭제 방법이 다를 수 있으니, 해당하는 방법을 따라 진행하면 된다.

  1. Docker Compose 바이너리 삭제 (직접 다운로드한 경우)

    만약 Docker Compose를 직접 바이너리 파일로 설치했다면, 아래 명령어를 통해 파일을 삭제할 수 있다.

    sudo rm /usr/local/bin/docker-compose
    

    또는 Docker Compose가 다른 경로에 설치되어 있는 경우, 설치된 경로에서 파일을 삭제하면 된다.

    sudo rm /usr/bin/docker-compose
    
  2. 패키지 관리자를 통한 삭제 (패키지 관리자로 설치한 경우)

    만약 Docker Compose를 패키지 관리자를 통해 설치한 경우, 해당 패키지를 제거하면 된다.

    예를 들어, pip을 사용해 설치한 경우:

    pip uninstall docker-compose
    
  3. 설치된 위치 확인

    설치된 위치를 모르는 경우, 다음 명령어로 Docker Compose의 설치 경로를 확인한 후 해당 파일을 삭제한다.

    which docker-compose
    

    출력된 경로를 확인하고 해당 파일을 삭제하면 된다.

    sudo rm /경로/도커-compose
    

요약

  • 직접 설치한 경우: sudo rm /usr/local/bin/docker-compose 또는 해당 경로에서 파일 삭제
  • 패키지 관리자로 설치한 경우: pip uninstall docker-compose
  • 설치된 위치를 모르는 경우: which docker-compose로 경로 확인 후 삭제

관련 사이트 및 블로그