source

도커 이미지 설치 디렉토리를 변경하는 방법은?

lovecheck 2023. 9. 19. 21:14
반응형

도커 이미지 설치 디렉토리를 변경하는 방법은?

이미지는 된 것으로 있습니다./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~하듯이graphv17.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 LTS1.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용 설치단계와 웹 크롤링 중 발견한 내용을 바탕으로 공식적으로 수행하는 방법은 다음과 같습니다.

  1. 도커 서비스 컨프를 재정의합니다.

     sudo systemctl edit docker.service
    
  2. 자신의 값을 대입하여 다음 행을 추가하거나 수정합니다.

     [Service]
     ExecStart=
     ExecStart=/usr/bin/dockerd --graph="/mnt/docker"
    

파일을 저장합니다. (다음을 만듭니다./etc/systemd/system/docker.service.d/override.conf)

  1. 다시 로드합니다.systemctl배열.

     sudo systemctl daemon-reload
    
  2. 도커를 다시 시작합니다.

     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아래에 언급된 파일.

  1. /etc/docker/daemon.json 생성성)

  2. 다음을 추가합니다.

{
  "data-root": "/new/path/to/docker-data"
}
  1. 스톱 도커
sudo systemctl stop docker
  1. 도커가 정지되었는지 점검하십시오.
ps aux | grep -i docker | grep -v grep
  1. 파일을 새 위치로 복사
sudo rsync -axPS /var/lib/docker/ /new/path/to/docker-data
  1. 도커 백업 시작
sudo systemctl start docker
  1. 도커가 새 위치를 사용하여 시작되었는지 확인합니다.
docker info | grep 'Docker Root Dir'
  1. 실행 중이어야 할 모든 것이 시작되었는지 확인합니다.
docker ps
  1. 문제가 없는지 확인하기 위해 서버에 두 복사본을 며칠 동안 방치한 후 자유롭게 삭제합니다.
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용입니다.

  1. Hyper-V Manager의 글로벌 작업 창에서 Hyper-V 설정...을 클릭합니다.
  2. 가상 하드 디스크에서 위치를 기본 위치에서 원하는 위치로 변경합니다.
  3. 가상 시스템 아래에서 위치를 기본 위치에서 원하는 위치로 변경하고 적용을 클릭합니다.

enter image description here

  1. 확인을 클릭하여 Hyper-V Settings 페이지를 닫습니다.

언급URL : https://stackoverflow.com/questions/24309526/how-to-change-the-docker-image-installation-directory

반응형