[docker] 도커 이미지 설치 디렉토리를 변경하는 방법은 무엇입니까?
내가 알 수 /var/lib/docker
있듯이 , docker 이미지 는 당겨질 때 설치됩니다 . ?와 같은 마운트 된 볼륨과 같이이 위치를 변경하는 방법이 /mnt
있습니까?
답변
Docker의 최신 버전에서는 https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
에 따라 data-root
매개 변수 값 을 사용자 정의 경로로 설정합니다 ./etc/docker/daemon.json
이전 버전에서는 -g
Docker 데몬을 시작할 때 옵션을 사용하여 Docker의 스토리지 기본 디렉토리 (컨테이너 및 이미지가있는 위치)를 변경할 수 있습니다 . (확인 docker --help
). Docker가 시작될 때 / etc / default / docker 에 추가하여이 설정을 자동으로 적용 할 수 있습니다.
답변
의견의 조언에 따라 Docker 시스템 설명서 를 사용 하여이 답변을 향상시킵니다. 아래 절차는 재부팅이 필요하지 않으며 훨씬 깨끗합니다.
먼저 사용자 정의 구성을위한 디렉토리 및 파일을 작성하십시오.
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo $EDITOR /etc/systemd/system/docker.service.d/docker-storage.conf
17.06-ce 붙여 넣기 이전의 도커 버전 :
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --graph="/mnt"
17.06-ce 페이스트 후 도커의 경우 :
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --data-root="/mnt"
를 통한 대체 방법 daemon.json
최근 에 Fedora 25에서 17.09-ce로 위의 절차를 시도했지만 작동하지 않는 것 같습니다. 그 간단한 수정 대신 /etc/docker/daemon.json
트릭 을 수행하십시오.
{
"graph": "/mnt",
"storage-driver": "overlay"
}
방법에도 불구하고 구성을 다시로드하고 Docker를 다시 시작해야합니다.
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker가 재구성되었는지 확인하려면 다음을 수행하십시오.
docker info|grep "loop file"
최신 버전 (17.03)에서는 다른 명령이 필요합니다.
docker info|grep "Docker Root Dir"
출력은 다음과 같아야합니다.
Data loop file: /mnt/devicemapper/devicemapper/data
Metadata loop file: /mnt/devicemapper/devicemapper/metadata
또는:
Docker Root Dir: /mnt
그런 다음 이전 Docker 저장소를 안전하게 제거 할 수 있습니다.
rm -rf /var/lib/docker
답변
새로운 도커 버전의 경우 v17.05.0에서 더 이상 사용되지 않는 data-root
것처럼 graph
사용해야합니다 : 공식 사용되지 않는 문서
편집하고 /etc/docker/daemon.json
(존재하지 않는 경우 작성) 다음을 포함하십시오.
{
"data-root": "/new/path/to/docker-data"
}
그런 다음 Docker를 다음과 같이 다시 시작하십시오.
sudo systemctl daemon-reload
sudo systemctl restart docker
답변
Fedora 에서이 작업을 수행하는 올바른 지침을 찾지 못했기 때문에 (편집 : CentOS 및 Suse에서도 작동해야한다는 의견을 지적한 사람들) (/ etc / default / docker는 사용되지 않음) 여기에 대답하십시오 :
/ etc / sysconfig / docker 를 편집 하고 OPTIONS 변수에 -g 옵션을 추가해야합니다. 옵션이 둘 이상인 경우 “”로 묶어야합니다. 필자의 경우 해당 파일에는 다음이 포함되어 있습니다.
OPTIONS=--selinux-enabled
그래서 그것은 될 것입니다
OPTIONS="--selinux-enabled -g /mnt"
다시 시작한 후 ( systemctl restart docker
) Docker는 새 디렉토리를 사용해야합니다
답변
도커 폴더를 / mnt로 이동하기 위해 심볼릭 링크를 사용하지 마십시오 (예 :). docker rm 명령 에 문제가 발생할 수 있습니다 .
도커에는 -g 옵션을 사용하는 것이 좋습니다. 우분투에서는 /etc/default/docker.io에서 영구적으로 설정할 수 있습니다. DOCKER_OPTS 라인을 향상 시키거나 교체하십시오.
예를 들면 다음과 같습니다.`DOCKER_OPTS = “-g / mnt / somewhere / else / docker /”
답변
훨씬 쉬운 방법 :
도커 서비스 중지
sudo systemctl stop docker
기존 도커 디렉토리를 새 위치로 이동
sudo mv /var/lib/docker/ /path/to/new/docker/
심볼릭 링크 만들기
sudo ln -s /path/to/new/docker/ /var/lib/docker
도커 서비스 시작
sudo systemctl start docker
답변
이 솔루션은 Red Hat 7.2 및 Docker 1.12.0 에서 작동합니다
텍스트 편집기에서 /lib/systemd/system/docker.service 파일을 편집하십시오
.
추가 -g / 경로 /로 / 고정 표시기 /를 의 말에 ExecStart의 지시어. 완전한 줄은 다음과 같아야합니다.
ExecStart=/usr/bin/dockerd -g /path/to/docker/
아래 명령을 실행
systemctl daemon-reload
systemctl restart docker
docker directory를 확인하는 명령을 실행하십시오.
docker info | grep "loop file\|Dir"
당신이있는 경우 / 등은 / SYSCONFIG / 고정 표시기 레드햇에서 파일이나 고정 표시기 1.7.1 확인 이 대답을.