[docker] 도커 이미지 설치 디렉토리를 변경하는 방법은 무엇입니까?

내가 알 수 /var/lib/docker있듯이 , docker 이미지 는 당겨질 때 설치됩니다 . ?와 같은 마운트 된 볼륨과 같이이 위치를 변경하는 방법이 /mnt있습니까?



답변

Docker의 최신 버전에서는 https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
에 따라 data-root매개 변수 값 을 사용자 정의 경로로 설정합니다 ./etc/docker/daemon.json

이전 버전에서는 -gDocker 데몬을 시작할 때 옵션을 사용하여 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
  • data-root 와 함께 Docker Storage를 사용하는 자세한 단계별 설명 (데이터 이동 포함) 은 블로그 게시물 에서 찾을 수 있습니다.
  • 윈도우 유사한 게시물의 경우 윈도우의 특정

답변

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 확인 대답을.