도커 이미지 설치 디렉토리를 변경하는 방법은?
이미지는 된 것으로 있습니다./var/lib/docker
당김에 따라 위치를이 위치를 다음과 같이 마운트된 볼륨으로 변경할 수 있는 방법이 있습니까와 마운트 할 수 이 있습니까?/mnt
?
의 도커 를할 수 .data-root
변수,수,/etc/docker/daemon.json
(https://docs.docker.com/engine/reference/commandline/dockerd/ #daemon-configuration-file에 따르면).
하여 도커 의() 를를 및 를 할 수 .-g
도커 데몬을 시작할 때 옵션을 선택합니다.(체크)docker --help
도커 시작 시 /etc/default/docker에 추가하여 자동으로 적용할 수 있습니다.
코멘트의 조언에 따라 저는 이 답변을 개선하기 위해 Docker systemed 문서를 사용합니다.아래 절차는 재부팅이 필요 없고 훨씬 깨끗합니다.
먼저 사용자 지정 구성을 위한 디렉토리 및 파일 생성:
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
최근에 페도라 25에서 17.09-ce로 위의 절차를 시도했는데 안 되는 것 같습니다.의 단순한 수정 대신에/etc/docker/daemon.json
속임수를 쓰다:
{
"graph": "/mnt",
"storage-driver": "overlay"
}
구성을 다시 로드하고 도커를 다시 시작해야 하는 방법에도 불구하고:
sudo systemctl daemon-reload
sudo systemctl restart 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
그러면 오래된 도커 저장소를 안전하게 제거할 수 있습니다.
rm -rf /var/lib/docker
를 .data-root
~하듯이graph
v17.05.0에서 사용되지 않음: 공식적으로 사용되지 않는 문서
/etc/docker/daemon.json
하지 않는 성)합니다.
{
"data-root": "/new/path/to/docker-data"
}
그런 다음 도커를 다음을 사용하여 다시 시작합니다.
sudo systemctl daemon-reload
sudo systemctl restart docker
- data-root을 사용한 Docker Storage를 사용한 보다 자세한 단계별 설명(이동 데이터 포함)은 다음 블로그 포스트에서 확인할 수 있습니다.
- Windows의 경우에도 유사한 게시물 Windows 특정
보다 쉬운 방법:
도커 서비스 중지
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
페도라에서 이 작업을 수행하기 위한 올바른 지침을 찾지 못했기 때문에(EDIT: 사람들은 이 작업이 CentOS와 Suse에서도 수행되어야 한다고 의견을 제시했습니다)(/etc/default/docker는 여기서 사용되지 않음).
/etc/sysconfig/docker를 편집하고 OPTIONS 변수에 -g 옵션을 추가해야 합니다.옵션이 둘 이상인 경우 ""에 동봉해야 합니다.제 경우에는 그 파일에 다음과 같은 내용이 포함되어 있었습니다.
OPTIONS=--selinux-enabled
그렇게 될 것입니다.
OPTIONS="--selinux-enabled -g /mnt"
)systemctl restart docker
새), .
심볼릭 링크를 사용하여 도커 폴더를 /mnt(예: /mnt)로 이동하지 마십시오.이로 인해 도커 rm 명령에 문제가 발생할 수 있습니다.
도커의 경우 -g 옵션을 사용하는 것이 좋습니다.Ubuntu에서는 /etc/default/docker.io 에서 영구적으로 설정할 수 있습니다.DOKER_OPTS Line을 개선하거나 교체합니다.
여기 예제: 'DOCKER_OPTS='-g/mnt/somewhere/else/docker/"
이 솔루션은 Red Hat 7.2 & Docker 1.12.0에서 작동합니다.
텍스트 편집기에서 /lib/systemd/system/docker.service 파일을 편집합니다.
Exec Start 지시어 끝에 -g /path/to/docker/를 추가합니다.전체 라인은 이렇게 보여야 합니다.
ExecStart=/usr/bin/dockerd -g /path/to/docker/
아래 명령 실행
systemctl daemon-reload
systemctl restart docker
명령을 실행하여 도커 디렉토리를 확인합니다.
docker info | grep "loop file\|Dir"
Red Hat 또는 Docker 1.7.1에 /etc/sysconfig/docker 파일이 있는 경우 이 답변을 확인하십시오.
In CentOS 6.5
service docker stop
mkdir /data/docker (new directory)
vi /etc/sysconfig/docker
다음 행 추가합니다.
other_args=" -g /data/docker -p /var/run/docker.pid"
그런 다음 파일을 저장하고 다시 도커를 시작합니다.
service docker start
파일을 만들 입니다./data/docker
당첨자 답변 복사 및 붙여넣기 버전 :)
이 내용만 사용하여 이 파일을 만듭니다.
$ sudo vi /etc/ dock/ daemon.json
{
"graph": "/my-docker-images"
}
:Ubuntu 16.04.2 LTS
1.12.6
Debian/Ubuntu 또는 Fedora의 경우 다른 답변을 사용할 수 있습니다.하지만 만약 당신이 파일을 가지고 있지 않다면,/etc/default/docker
아니면/etc/sysconfig/docker
, 그리고 당신의 시스템은 systemd를 실행하고 있습니다, 당신은 h3nrik에 의해 이 답변을 따르고 싶을지도 모릅니다.저는 아치를 사용하고 있고, 이것은 저에게 적합합니다.
기본적으로 새 도커 이미지 위치를 환경 변수로 읽고 해당 환경 변수를 도커 데몬 실행 스크립트로 전달하도록 systemd를 구성해야 합니다.
완성도를 위해 h3nrick의 답변은 다음과 같습니다.
당신이 가지고 있습니까?/lib/systemd/system/docker.service
일?
합니다를 /etc/default/docker
로서:EnvironmentFile=-/etc/default/docker
.
/etc/default/docker
파일을 작성한 다음 추가DOCKER_OPTS="-g /home/rseixas/Programs/Docker/images"
.
에는 .systemctl daemon-reload && systemctl restart docker
.
자세한 내용은 설명서도 참고하시기 바랍니다.
Linux용 설치 후 단계와 웹 크롤링 중 발견한 내용을 바탕으로 공식적으로 수행하는 방법은 다음과 같습니다.
도커 서비스 컨프를 재정의합니다.
sudo systemctl edit docker.service
자신의 값을 대입하여 다음 행을 추가하거나 수정합니다.
[Service] ExecStart= ExecStart=/usr/bin/dockerd --graph="/mnt/docker"
파일을 저장합니다. (다음을 만듭니다./etc/systemd/system/docker.service.d/override.conf
)
다시 로드합니다.
systemctl
배열.sudo systemctl daemon-reload
도커를 다시 시작합니다.
sudo systemctl restart docker.service
에 을 으로 만들 수 ,/var/lib/docker
폴더에 이미지가 없으면 백업할 수 있습니다.
@mbartelemy 를 할 수 .-g
도커 데몬을 직접 시작할 때 option.
에는 하지 않는 /etc/default/docker
파일입니다. 여기에 이것에 대한 지침이 있습니다.
올바른 접근 방식은 다음과 같은 정보를 생성하는 것입니다./etc/docker/daemon.json
) 또는 리눅스는 Mac) 에 저장할 수 있습니다.%programdata%\docker\config\daemon.json
윈도우 상에서 이 다른되지 않는 이 파일이 다른 용도로 사용되지 않는 경우 다음 필드로 충분합니다 필드로
{
"graph": "/docker/daemon_files"
}
하도록 할 새가 합니다./docker/daemon_files
훨씬 간단한 솔루션은 다음과 같이 원하는 모든 것에 대해 소프트 링크 포인트를 생성하는 것입니다.
link -s /var/lib/docker /mnt/whatever
제 CentOS 6.5 서버에서 작동합니다.
도커 버전 19.03.14를 보고 있었습니다.아래 링크가 도움이 되었습니다.
아래 섹션에 추가한 /etc/docker/daemon.json 파일:-
{
"data-root": "/hdd2/docker",
"storage-driver": "overlay2"
}
이 블로그 게시물은 나를 도와줍니다.
도커 컨테이너 등을 생성한 후에도 디렉토리를 변경하는 단계는 다음과 같습니다.
, .docker.service
아니면init.d
,에 내용을 .json
아래에 언급된 파일.
/etc/docker/daemon.json
생성성)다음을 추가합니다.
{
"data-root": "/new/path/to/docker-data"
}
- 스톱 도커
sudo systemctl stop docker
- 도커가 정지되었는지 점검하십시오.
ps aux | grep -i docker | grep -v grep
- 파일을 새 위치로 복사
sudo rsync -axPS /var/lib/docker/ /new/path/to/docker-data
- 도커 백업 시작
sudo systemctl start docker
- 도커가 새 위치를 사용하여 시작되었는지 확인합니다.
docker info | grep 'Docker Root Dir'
- 실행 중이어야 할 모든 것이 시작되었는지 확인합니다.
docker ps
- 문제가 없는지 확인하기 위해 서버에 두 복사본을 며칠 동안 방치한 후 자유롭게 삭제합니다.
sudo rm -r /var/lib/docker
열린 SUSE 도약 시 42.1
$cat /etc/sysconfig/docker
## Path : System/Management
## Description : Extra cli switches for docker daemon
## Type : string
## Default : ""
## ServiceRestart : docker
#
DOCKER_OPTS="-g /media/data/installed/docker"
DOCKER_OPTS는 처음에 비어 있었고, 내가 한 일은 도커가 내 새 디렉토리를 사용하도록 만들기 위해 인수에 추가한 것뿐입니다.
Fedora 26 및 다른 많은 버전에서는 위에서 설명한 대로 기본 폴더 위치를 이동한 후 오류가 발생할 수 있습니다.이는 특히 집 아래 어딘가로 옮길 경우에 해당됩니다.이것은 SeLinux가 시작되고 도커 컨테이너가 이 위치 아래에서 많은 프로그램을 실행하지 못하도록 하기 때문입니다.
간단한 해결책은 -g 매개 변수를 추가할 때 --enable-selinux 옵션을 제거하는 것입니다.
AWS Ubuntu 16.04 Server에서 도커 dir 아래 /home/ubuntu/kaggle/에 탑재된 별도의 EBS에 도커 이미지를 넣었습니다.
이 초기화 스크립트의 토막이 올바르게 작동했습니다.
# where are the images initially stored?
sudo docker info | grep "Root Dir"
# ... not where I want them
# modify the configuration files to change to image location
# NOTE this generates an error
# WARNING: Usage of loopback devices is strongly discouraged for production use.
# Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
# see https://stackoverflow.com/questions/31620825/
# warning-of-usage-of-loopback-devices-is-strongly-discouraged-for-production-use
sudo sed -i ' s@#DOCKER_OPTS=.*@DOCKER_OPTS="-g /home/ubuntu/kaggle/docker"@ ' /etc/default/docker
sudo chmod -R ugo+rw /lib/systemd/system/docker.service
sudo cp /lib/systemd/system/docker.service /etc/systemd/system/
sudo chmod -R ugo+rw /etc/systemd/system/
sudo sed -i ' s@ExecStart.*@ExecStart=/usr/bin/dockerd $DOCKER_OPTS -H fd://@ ' /etc/systemd/system/docker.service
sudo sed -i '/ExecStart/a EnvironmentFile=-/etc/default/docker' /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker info | grep "Root Dir"
# now they're where I want them
17.06.0-ce-mac19 버전의 Mac 사용자의 경우 기본 설정 옵션에서 사용자 인터페이스에서 디스크 이미지 위치를 이동하기만 하면 디스크 이미지 위치를 변경할 수 있습니다. 디스크 이미지 이동을 클릭하여 도커를 다시 시작합니다.이 방법을 사용하여 외부 하드디스크를 도커 이미지 저장에 사용할 수 있었습니다.
2020년을 바라보는 사람들을 위해.다음은 Windows 10 Machine용입니다.
- Hyper-V Manager의 글로벌 작업 창에서 Hyper-V 설정...을 클릭합니다.
- 가상 하드 디스크에서 위치를 기본 위치에서 원하는 위치로 변경합니다.
- 가상 시스템 아래에서 위치를 기본 위치에서 원하는 위치로 변경하고 적용을 클릭합니다.
- 확인을 클릭하여 Hyper-V Settings 페이지를 닫습니다.
언급URL : https://stackoverflow.com/questions/24309526/how-to-change-the-docker-image-installation-directory
'source' 카테고리의 다른 글
subprocess.open과 subprocess.run의 차이점은 무엇입니까? (0) | 2023.09.19 |
---|---|
도커, 볼륨을 읽기 전용으로 마운트 (0) | 2023.09.19 |
행 1에서 시작하고 행 2에서 끝을 갖는 행 2개의 결과를 결합합니다. (0) | 2023.09.19 |
오라클에서 인덱스를 사용하지 않도록 강제하는 방법 (0) | 2023.09.19 |
C 구조의 문자열 필드로 작업하는 방법? (0) | 2023.09.19 |