Docker 권한 거부 오류 해결 방법
- 영구 솔루션(도커 그룹에 사용자 추가)
매번 sudo를 사용하지 않으려면 사용자를 docker 그룹에 추가하세요:
1. 도커 그룹이 없는 경우 해당 그룹을 만듭니다:
bash
Copy
sudo groupadd docker
- Add your user to the docker group:
bash
Copy
sudo usermod -aG docker $USER
- Apply the new group membership (either):
bash
Copy
newgrp docker
또는 로그아웃했다가 다시 로그인
- 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 서비스로 등록 (더 세밀한 제어 가능)
- 서비스 파일 생성 (/etc/systemd/system/docker-[서비스명].service):
bash
Copy
sudo nano /etc/systemd/system/docker-mycontainer.service
- 다음 내용 추가 (예시):
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
- 서비스 활성화:
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: 사용자 정의 서비스 생성
주의사항
- 컨테이너가 정상적으로 종료되도록 애플리케이션을 구성해야 합니다.
- Docker 서비스 자체가 시작될 때만 컨테이너가 실행되므로, Docker가 자동 시작되도록 설정되어 있어야 합니다.
- always와 unless-stopped의 차이:
- always: docker stop으로 명시적으로 중지해도 재시작
- unless-stopped: 한 번 명시적으로 중지하면 재시작하지 않음
가장 권장하는 방법은 --restart unless-stopped 옵션을 사용하는 것입니다.
'Docker' 카테고리의 다른 글
mysql 볼륨마운트 워크벤치, 여러 컨테이너 호스트볼륨 공유, 리소스 모니터링 (1) | 2023.11.06 |
---|