본문 바로가기
Docker

Docker Permission Denied Error (사용자를 docker 그룹에 추가), restart

by leopard4 2025. 3. 27.

Docker 권한 거부 오류 해결 방법

 

  1. 영구 솔루션(도커 그룹에 사용자 추가)
    매번 sudo를 사용하지 않으려면 사용자를 docker 그룹에 추가하세요:
    1. 도커 그룹이 없는 경우 해당 그룹을 만듭니다:
bash
Copy
sudo groupadd docker
  1. Add your user to the docker group:
bash
Copy
sudo usermod -aG docker $USER
  1. Apply the new group membership (either):
bash
Copy
newgrp docker

 

또는 로그아웃했다가 다시 로그인

  1. Verify it works:
bash
Copy
docker ps

 

Docker 컨테이너 시작 시 자동 실행 설정 방법

Docker 컨테이너를 컴퓨터 시작 시 자동으로 실행하도록 설정하는 방법은 다음과 같습니다.

1. --restart 옵션 사용 (가장 간단한 방법)

컨테이너 생성 시 --restart 옵션을 지정:

bash
Copy
docker run -d --restart unless-stopped [이미지_이름]

또는 기존 컨테이너에 적용하려면:

bash
Copy
docker update --restart unless-stopped [컨테이너_이름_또는_ID]

restart 옵션 종류:

  • no: 자동 재시작 안 함 (기본값)
  • on-failure: 오류 발생 시만 재시작
  • always: 항상 재시작
  • unless-stopped: 명시적으로 중지하지 않은 경우 재시작 (권장)

2. systemd 서비스로 등록 (더 세밀한 제어 가능)

  1. 서비스 파일 생성 (/etc/systemd/system/docker-[서비스명].service):
bash
Copy
sudo nano /etc/systemd/system/docker-mycontainer.service
  1. 다음 내용 추가 (예시):
ini
Copy
[Unit]
Description=My Docker Container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my_container
ExecStop=/usr/bin/docker stop -t 2 my_container

[Install]
WantedBy=multi-user.target
  1. 서비스 활성화:
bash
Copy
sudo systemctl enable docker-mycontainer.service
sudo systemctl start docker-mycontainer.service

3. Docker Compose 사용 시

docker-compose.yml 파일에서 restart 속성 설정:

yaml
Copy
version: '3'
services:
  my_service:
    image: my_image
    restart: unless-stopped

4. 호스트 OS의 자동 시작 스크립트 활용

  • Ubuntu: /etc/rc.local에 명령어 추가
  • systemd: 사용자 정의 서비스 생성

주의사항

  1. 컨테이너가 정상적으로 종료되도록 애플리케이션을 구성해야 합니다.
  2. Docker 서비스 자체가 시작될 때만 컨테이너가 실행되므로, Docker가 자동 시작되도록 설정되어 있어야 합니다.
  3. always와 unless-stopped의 차이:
    • always: docker stop으로 명시적으로 중지해도 재시작
    • unless-stopped: 한 번 명시적으로 중지하면 재시작하지 않음

가장 권장하는 방법은 --restart unless-stopped 옵션을 사용하는 것입니다.