Docker-Install-Root-Dir-Modify

CentOS 도커 설치(재설치)와 Root Dir 변경

Posted by 옐란 on 2021-02-23

설치환경

  • OS: CentOS 7.2
  • Docker: Docker Comunity 20.0.3?

Docker (재)설치

  • 도커가 이미 설치된 경우, 관련 파일/패키지를 삭제하고 재설치를 수행해야 한다.

컨테이너 종료, 이미지 삭제

1
2
3
docker stop $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)

서비스 중지

1
2
systemctl stop docker.service
systemctl stop containerd.service

설치된 패키지 확인/삭제

1
2
3
4
yum list installed | grep docker
yum erase containerd.io.x86_6
yum erase docker-ce.x86_64
yum erase docker-ce-cli.x86_64

디렉토리/파일 삭제

1
2
3
rm -rf  /var/lib/docker
cd /var/run
rm docker.sock docker.pid

도커 재설치/확인

1
2
yum install -y docker-ce
yum list installed | grep docker

도커 enable/start

1
2
3
4
5
systemctl enable docker.service
systemctl enable containerd.service
systemctl start docker.service
systemctl status docker.service
service status docker

참고


Root Dir 변경

  • Docker 설치를 Root 계정으로 하는경우, Docker image 저장경로가 /var/lib/docker에 잡힘에 따라 Root 공간을 점유하게 된다.
  • Root 공간은 OS 영역이므로 스토리지 관리에 문제(공간부족 등)가 되고, 보통은 별도의 디스크를 마운트하여 할당하는 것이 좋다.

설치 경로 확인:

1
2
cd /var/lib/docker
ls -F

현재 dir-root 확인

1
2
3
docker info | grep "Docker Root Dir"
docker volume inspect my-vol
systemctl status docker.service

스크립트 파일변경

1
2
3
vi /usr/lib/systemd/system/docker.service
( - ExecStart로 시작하는 라인 끝에 --data-root=/docker/root/dir 추가)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/home/docker

데이터 복사/재시작

  • Docker Root 디렉토리의 데이타 복사 또는 이동 및 Docker 서비스 재시작
1
2
3
4
5
systemctl daemon-reload 
systemctl stop docker
mkdir /home/docker2
cp -rp /var/lib/docker /home/ => 파일 복사
systemctl start docker

Root 변경확인

1
2
3
docker info | grep "Docker Root Dir"
(Docker Root Dir: /home/docker => 변경된 root dir )
docker volume inspect my-vol

실행권한 추가

1
sudo chmod 666 /var/run/docker.sock

참고