AubE Log : 오브 로그

일상 생활에 대한 이야기, 프로그램 개발에 대한 기록 등 일련의 기억들을 다시 되짚어 본다.

Docker

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

오브:AubE 2024. 9. 25. 13:42

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

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

도커 설치

  1. EC2 인스턴스에 SSH 접속한다.
  2. ssh -i <your-key-pair.pem> ec2-user@your-ec2-instance-public-dns
  3. 도커를 설치한다.
  4. sudo yum update -y sudo yum install docker -y
  5. 도커 서비스를 시작하고 부팅 시 자동으로 시작되도록 설정한다.
  6. sudo systemctl start docker sudo systemctl enable docker
  7. 도커가 정상적으로 설치되었는지 확인한다.
  8. docker --version

도커 자동 재실행 설정

  1. 도커 서비스가 재부팅 시 자동으로 재실행되도록 설정한다.
  2. sudo systemctl enable docker
  3. 컨테이너가 재부팅 시 자동 재시작되도록 Dockerfile 또는 docker run 명령어에 --restart 옵션을 추가한다.
  4. docker run -d --restart unless-stopped <image-name>

2. Docker Compose 설치

Docker Comopose 설치

  1. Docker Compose 바이너리를 다운로드한다.
  2. sudo curl -SL "<https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$>(uname -m)" -o /usr/local/bin/docker-compose
  3. 바이너리에 실행 권한을 부여한다.
  4. sudo chmod +x /usr/local/bin/docker-compose
  5. 심볼릭 링크를 생성하여 Docker Compose 명령어를 사용할 수 있도록 한다.
  6. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  7. Docker Compose가 정상적으로 설치되었는지 확인한다.
  8. docker-compose --version

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

  1. docker-compose.yml 파일에 restart 정책을 추가하여 컨테이너가 자동으로 재시작되도록 설정한다. 설정 샘플:
  2. version: '3' services: web: image: nginx ports: - "80:80" restart: unless-stopped
  3. Docker-compose 실행
  4. docker-compose up -d

3. Docker 재설치

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

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

<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 바이너리 삭제 (직접 다운로드한 경우)
    sudo rm /usr/local/bin/docker-compose
    
    또는 Docker Compose가 다른 경로에 설치되어 있는 경우, 설치된 경로에서 파일을 삭제하면 된다.
  2. sudo rm /usr/bin/docker-compose
  3. 만약 Docker Compose를 직접 바이너리 파일로 설치했다면, 아래 명령어를 통해 파일을 삭제할 수 있다.
  4. 패키지 관리자를 통한 삭제 (패키지 관리자로 설치한 경우)예를 들어, pip을 사용해 설치한 경우:
  5. pip uninstall docker-compose
  6. 만약 Docker Compose를 패키지 관리자를 통해 설치한 경우, 해당 패키지를 제거하면 된다.
  7. 설치된 위치 확인
    which docker-compose
    
    출력된 경로를 확인하고 해당 파일을 삭제하면 된다.
  8. sudo rm /경로/도커-compose
  9. 설치된 위치를 모르는 경우, 다음 명령어로 Docker Compose의 설치 경로를 확인한 후 해당 파일을 삭제한다.

요약

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

 

https://aube1225.blogspot.com/2024/08/ec2-docker-docker-compose.html