OSX에서 Docker Toolbox를 사용하고 있습니다.
영구 데이터를 저장하기 위해 데이터 볼륨 컨테이너를 만들었습니다 : https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container .
이 데이터가 실제로 컨테이너가 아닌 boot2docker VM (docker-machine에 의해 생성됨)에 저장되어 있는지 확인하여 데이터가 지속되도록합니다. 그러나 “docker-machine restart”는 vm에서이 사용자 정의 데이터를 지 웁니다.
무슨 일이 일어나고 있는지에 대한 문서를 찾을 수 없습니다. / var / lib / docker의 데이터가 보존 될 것이라고 언급 한 한 포럼 게시물을 찾았지만 공식 문서를 찾을 수 없으며 위의 영구 저장소 안내서 에서이 경로를 사용하지 않거나 심지어는 데이터가 삭제됩니다.
이것이 예상됩니까? 그렇다면 영구 데이터를 저장하기위한 올바른 경로에 공식 문서가 있습니까?
편집 : 실패한 시나리오의 예 추가
$ docker-machine ssh alt
docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello"
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
hello
docker@alt:~$ exit
$ docker-machine restart alt
Starting VM...
$ docker-machine ssh alt
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
cat: can't open '/var/lib/mysql/hello': No such file or directory
답변
이것은 분명히 작동해야합니다.
$ docker-machine ssh default
docker@default:~$ docker run -v /data --name mydata busybox true
docker@default:~$ docker run --volumes-from mydata busybox sh -c "echo hello >/data/hello"
docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello
hello
docker@default:~$ exit
$ docker-machine restart default
Starting VM...
$ docker-machine ssh default
docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello
hello
문제를 재현하기위한 단계를 자세히 설명 할 수 있습니까?
boot2docker에는 다음을 제외하고 읽기 전용 파일 시스템이 있습니다 (재부팅시 삭제됨).
- 컨테이너 및 해당 데이터 (볼륨)-이 내용을 읽습니다.
/var/lib/docker
- 도커 이미지
- 도커 구성 (예 :
/var/lib/boot2docker/profile
데몬 플래그를 조정할 수있는 위치)
답변
boot2docker를 사용하지 않지만 재부팅시 / data가 지워지면 볼륨이 저장되는 위치 ( docker run -v /data:/var/lib/mysql
)이므로 손실됩니다.
당신이하고있는 일은 또한 볼륨 지속성을 처리하기 위해 두 가지 패턴을 결합하는 것입니다. 지속성을 확보하기 위해 컨테이너는 호스트 시스템의 지정된 위치에서 볼륨을 마운트하거나 (영구적으로 추정되는) 데이터 컨테이너와 연관되어로 마운트 할 수 있습니다 --volumes-from
. 호스트 파일 시스템 접근 방식이 boot2docker에 적합하지 않은 것처럼 들리므로 데이터 볼륨 패턴을 사용해야합니다.
아마도 당신은 당신의 데이터 컨테이너를 작성해야 -v /var/lib/mysql
보다는 -v /data:/var/lib/mysql
.
답변
xhyve vm을 사용하는 mac beta 용 docker를 사용하고 있습니다.
/ var / lib / boot2docker의 내용은 컴퓨터를 다시 시작할 때까지 유지됩니다. 따라서 vm에서 특정 파일을 사용할 수있게하려면이 디렉토리에 넣으십시오.
도커 컨테이너를 실행하기 위해 다른 위치에서 액세스 할 수있게하려면 / var / lib / boot2docker / profile에 다음을 추가 할 수 있습니다.
mkdir -p /desired/path
ln -s /var/lib/boot2docker/your.file /desire/path/your.file
호스트 파일의 추가 값과 같이 vm 재시작 사이에 유지 될 다른 구성을 시스템 파일에 추가하려면 아래 명령과 같은 명령을 / var / lib / boot2docker / profile에 추가 할 수 있습니다.
echo '127.0.0.1 your.domain.com' >> /etc/hosts
그것이 도움이되기를 바랍니다.