Docker를 사용하여 웹 애플리케이션이나 mysql 데이터베이스를 배포할 때 컨테이너가 다시 시작되면 컨테이너 실행 중에 생성된 로그나 데이터베이스 데이터가 삭제됩니다.
해결책:
Docker는 호스트 디스크 디렉터리를 마운트하여 데이터를 영구적으로 저장할 수 있습니다.
1. 컨테이너를 생성할 때 Docker Volume을 실행합니다
docker run 명령을 사용하여 Docker 컨테이너를 실행하고 ubuntu/nginx 이미지를 사용하고 로컬 디렉터리를 마운트합니다. tmp/source를 컨테이너 디렉토리/tmp/destination
docker run -itd --volume /tmp/source:/tmp/destination --name test ubuntu/nginx bash
ubuntu/nginx 기반 이미지는 Docker 컨테이너를 생성합니다.
지정된 컨테이너의 이름은 test이며 ––name 옵션으로 지정됩니다.
Docker 볼륨은 ––volume(-v로 축약 가능) 옵션으로 지정됩니다. 호스트의 /tmp/source 디렉터리는 컨테이너의 /tmp/destination 디렉터리에 해당합니다.
2. Docker 볼륨 보기
docker Inspection 명령을 사용하여 Docker 컨테이너의 자세한 정보를 확인하세요.
dockerspec --format= '{ {json .Mounts}}'test | python -m json.tool[{"Destination": "/tmp/destination","Mode": "","Propagation": "","RW": true, "Source ": "/tmp/source", "Type": "bind"}]
필요한 컨테이너 정보를 선택적으로 보려면 --format 옵션을 사용하세요. .Mount는 컨테이너의 Docker 볼륨 정보입니다.
python -m json.tool은 출력 json 문자열의 형식을 지정하고 표시할 수 있습니다.
Source는 호스트의 디렉터리인 /tmp/source 를 나타냅니다.
Destination은 컨테이너의 디렉터리인 /tmp/destination입니다.
3. 로컬 파일을 컨테이너에 동기화할 수 있습니다.
local/tmp/source 디렉터리에 새 hello.txt 파일을 생성합니다.
touch /tmp /source/hello.txtls /tmp/source/hello.txt
hello.txt 파일은 컨테이너/tmp/destination/ 디렉토리에 표시됩니다
Docker 사용 exec 명령을 사용하면 컨테이너에서 명령을 실행할 수 있습니다.
docker exectest ls /tmp/destination/hello.txt
따라서 호스트 시스템의 /tmp/source/ 디렉터리에 대한 수정 사항을 컨테이너 디렉터리인 /tmp에 동기화할 수 있습니다. /목적지 / 중간.
4. 컨테이너 파일을 호스트 시스템에 동기화할 수 있습니다
container/tmp/destination 디렉터리에 새 world.txt 파일을 생성합니다
#🎜🎜 #docker exec test touch /tmp/destination/world.txtdocker exec test ls /tmp/destination/hello.txtworld.txtworld.txt 파일은 호스트/tmp/source/ 디렉터리에 표시됩니다.#🎜 🎜#ls /tmp/source/hello.txt world.txt
더 많은 관련 튜토리얼을 보려면 PHP 중국어 웹사이트를 주목하세요
docker tutorial#🎜🎜 # 열.위 내용은 Docker를 다시 시작하면 데이터가 손실되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!