이 글은 docker의 데이터 볼륨에 대한 관련 지식을 제공합니다. 데이터 볼륨은 컨테이너 간에 데이터를 공유하거나 재사용할 수 있습니다. 데이터 볼륨의 변경 사항은 이미지 업데이트에 포함되지 않습니다. 돕다.
추천 학습: "docker 비디오 튜토리얼"
Docker 컨테이너를 사용하면 일련의 데이터 파일이 생성됩니다. 는 삭제되지만 생성된 콘텐츠의 일부는 다른 용도로 저장될 것으로 예상됩니다. Docker는 애플리케이션과 실행 환경을 릴리스용 컨테이너로 패키징합니다. 프로그래머는 실행 프로세스 중에 생성된 데이터 중 일부가 유지되기를 바랍니다. 컨테이너 간에 데이터를 공유할 수 있습니다.
일반적으로 도커 컨테이너 데이터 볼륨은 일반적으로 사용되는 USB 디스크로 간주할 수 있습니다. 하나 이상의 컨테이너에 존재하며 도커에 의해 컨테이너에 마운트됩니다. 컨테이너에서 삭제하지 마십시오. 마운트된 데이터 볼륨을 삭제하십시오.
데이터 볼륨은 컨테이너 간에 데이터를 공유하거나 재사용할 수 있습니다.
데이터 볼륨의 변경 사항은 즉시 적용됩니다.
데이터 볼륨의 변경 사항은 미러 업데이트에 포함되지 않습니다.
기본적으로, 데이터 볼륨은 컨테이너가 삭제되더라도 항상 존재합니다.
데이터 볼륨의 수명 주기는 어떤 컨테이너도 사용하지 않을 때까지 계속됩니다.
데이터 볼륨: 데이터 볼륨 컨테이너의 데이터는 다음에 직접 매핑됩니다. 로컬 호스트 환경
데이터 볼륨 컨테이너 :데이터 볼륨 컨테이너 데이터 볼륨을 유지하려면 특정 컨테이너를 사용하세요
Syntax
호스트 파일을 컨테이너에 복사
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
컨테이너의 파일을 호스트에 복사
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
공통 매개변수
-L: 소스 링크를 대상에 유지
기본 사용법
호스트 파일을 컨테이너에 복사
docker cp /data/index.html nginx:/usr/share/nginx/html/index.html
컨테이너의 파일을 호스트에 복사
docker cp nginx:/etc/nginx/nginx.conf /data
데이터 볼륨(데이터 볼륨)은 하나 이상의 컨테이너에 사용할 수 있습니다. 호스트 운영 체제 디렉터리를 컨테이너에 직접 매핑하는 데 사용되는 특수 디렉터리입니다.
데이터 볼륨에 대한 주의 사항
데이터 볼륨을 마운트하려면 create/start 대신 실행을 통해 시작 컨테이너를 생성하는 것이 가장 좋습니다. 많은 구성을 문서화해야 하지만 불가능하지는 않습니다.
Docker 공식 홈페이지에서는 파일을 마운트하는 것보다 디렉터리를 최대한 마운트하는 것을 권장합니다
데이터 볼륨 유형
호스트 데이터 볼륨: 호스트의 파일 시스템에 직접 있지만 컨테이너(바인드 마운트)를 통해 접근 가능
named Data 볼륨: 디스크에서 Docker가 관리하는 데이터 볼륨이지만 이 볼륨에는 이름이 있습니다.
익명 데이터 볼륨: 디스크에서 Docker가 관리하는 데이터 볼륨입니다. Docker가 이러한 파일을 관리하지 않기 때문에 찾기가 쉽지 않습니다.
호스트 데이터 볼륨
바인드 마운트: 컨테이너의 데이터는 호스트 파일 시스템의 어느 곳에나, 심지어 중요한 시스템 디렉터리나 파일에도 저장됩니다. docker 이외의 프로세스에서도 임의로 수정할 수 있습니다.
바인드 마운트를 사용하면 호스트 디렉터리나 파일이 컨테이너에 마운트됩니다. 컨테이너는 탑재 디렉터리나 파일의 절대 경로에 따라 호스트의 데이터를 사용하거나 수정합니다. 호스트의 디렉터리나 파일은 미리 존재할 필요가 없으며 필요할 때 자동으로 생성됩니다.
바인드 마운트를 사용하는 것은 성능 측면에서 매우 좋지만 잘 구조화된 파일 시스템을 갖춘 호스트 시스템에 따라 다릅니다.
바인드 마운트를 사용하는 컨테이너는 중요한 시스템 파일 및 디렉터리 생성, 수정 및 삭제를 포함하여 컨테이너 내부 프로세스를 통해 호스트 파일 시스템을 수정할 수 있습니다. 이 기능은 매우 강력하지만 분명히 다른 프로세스에 영향을 미칠 수도 있습니다. 호스트의 Docker보다
Notes
빈 데이터 볼륨을 컨테이너의 비어 있지 않은 디렉터리에 마운트하면 이 디렉터리의 파일이 데이터 볼륨에 복사됩니다.
비어 있지 않은 데이터 볼륨을 컨테이너에 마운트하는 경우 컨테이너의 디렉터리와 컨테이너의 디렉터리는 데이터 볼륨의 데이터를 표시합니다. 컨테이너의 원본 디렉터리에 데이터가 있으면 원본 데이터는 숨겨집니다
기본 사용법
Syntax
docker run -v /宿主机绝对路径目录:/容器内目录 镜像名
기본 사용법
docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -v /data/mysql:/var/lib/mysql mysql:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci
컨테이너 디렉터리 권한
Pass -v 컨테이너 내 경로: ro rw 읽기 변경 및 쓰기 권한 ro :readonly 읽기 전용
rw:readwrite 읽기 및 쓰기 가능
docker run -it -v /Host 절대 경로 디렉터리:/Container 디렉터리:ro 이미지 이름
docker run -it -v /Host 절대 경로 디렉터리 :/컨테이너 내 디렉터리: rw 이미지 이름
예:
docker run -d -P --name nginx05 -v nginx1:/etc/nginx:ro nginx docker run -d -P --name nginx05 -v nginx2:/etc/nginx:rw nginx
ro ro가 보인다면 이 경로는 호스트를 통해서만 동작할 수 있고, 컨테이너 내부에서는 동작할 수 없다는 의미입니다!
명명된 데이터 볼륨
Basic
docker run -itd --name nginx -p 80:80 -v lagouedu-nginx:/etc/nginx nginx:1.19.3-
alpine
을 사용하여 도커 데이터 볼륨을 확인합니다. docker 볼륨 ls
lagouedu-nginx 호스트 디렉터리 보기
docker volume inspect lagouedu-nginx
도커 데이터 볼륨 기본 디렉터리 입력
cd /var/lib/docker/volumes/lagouedu-nginx
파일 보기
ls
모든 파일은 기본적으로 docker에 저장됩니다_ cd _data는 데이터 디렉터리에
컨테이너 삭제
docker rm $(docker stop $(docker ps -aq))
查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在
ls
匿名数据卷
基本使用
docker run -itd --name nginx -p 80:80 -v /etc/nginx nginx:1.19.3-alpine 查看docker数据卷 docker volume ls
查看宿主机目录
docker volume inspect dbd07daa4e40148b11....
进入docker数据卷默认目录
cd /var/lib/docker/volumes/dbd07daa4e40148b11....
查看文件
ls
所有的文件docker默认保存在_data目录中 cd _data
删除容器
docker rm $(docker stop $(docker ps -aq))
查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在
ls
run命令
常用参数
--volumes-from
如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器
也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。
发现创建好的数据卷容器是处于停止运行的状态,因为使用 —volumes-from 参数所挂载数据卷的容器 自己并不需要保持在运行状态。
基本使用
docker run -d --name data-volume -v /data/nginx:/usr/share/nginx/html -v /data/mysql:/var/lib/mysql centos:7.8.2003 docker run -itd --name nginx01 -p 80:80 --volumes-from data-volume nginx:1.19.3- alpine echo "nginx" > /data/nginx/index.html http://192.168.198.100 docker run -itd --name nginx02 -p 81:80 --volumes-from data-volume nginx:1.19.3- alpine http://192.168.198.100:81 docker run -itd --name mysql01 --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 -- character-set-server=utf8 --collation-server=utf8_general_ci docker run -itd --name mysql02 --restart always --privileged=true -p 3307:3306 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 -- character-set-server=utf8 --collation-server=utf8_general_ci
推荐学习:《docker视频教程》
위 내용은 도커 데이터 볼륨 구성에 대한 가장 자세한 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!