>운영 및 유지보수 >Docker >Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

WBOY
WBOY앞으로
2022-01-14 18:44:581804검색

이 기사는 Docker에서 요약하고 공유하는 데이터 볼륨 기술 관련 지식을 제공하는 것이 모든 사람에게 도움이 되기를 바랍니다.

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

Docker 데이터 볼륨 기술

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

컨테이너 데이터 볼륨이란

Docker의 개념 검토

환경과 함께 패키지로 거울에 담을 예정입니다!

데이터? 데이터가 컨테이너에 있는 경우 컨테이너를 삭제하면 데이터가 손실됩니다! 요구 사항: 데이터를 유지할 수 있습니다.

MySQL, 컨테이너가 삭제되면 데이터베이스가 삭제되고 실행됩니다. ---> 요구 사항: MySQL 데이터를 로컬에 저장할 수 있습니다!

컨테이너 간 데이터 공유 기술이 있을 수 있어요! Docker 컨테이너에서 생성된 데이터는 로컬에 동기화됩니다!

롤링기술입니다! 디렉토리 마운트, 컨테이너의 디렉토리를 Linux×에 마운트하세요!

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

요약: 컨테이너의 지속성 및 동기화 작업! 컨테이너 간 데이터 공유도 가능합니다!

데이터 볼륨 사용

docker run -it -v 宿主机目录: 容器目录 -p 主机端口:容器端口 容器id

실습 연습

검사하여 동기화 세부 정보 보기

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

컨테이너에 파일을 생성하여 로컬 폴더와 동기화되었는지 확인

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

컨테이너가 다음으로 로컬 파일을 수정하여 수정 사항이 컨테이너

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

Mysql 실제 전투

command

docker run -d -p 3310:3306 -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

parameter

-d 백그라운드 작업

- p 포트 매핑

-v 데이터 볼륨 마운트: 데이터 동기화

-e 환경 변수 설정: MySQL 로그인 비밀번호는 여기에서 설정됩니다.

--name 컨테이너 이름 지정

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

테스트 결과: 연결 성공

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

발생한 문제

처음 사용한 최신 버전의 mysql: 8.0----navicat을 사용하여 연결할 때 항상 설명할 수 없는 오류가 보고되었습니다.

해결 방법: 버전 5.7로 변경하면 문제가 없습니다

미러 mysql을 실행하면, 비밀번호를 설정하기 위해 -e MYSQL_ROOT_PASSWORD=123456을 추가하지 않습니다. 컨테이너는 항상 닫히고 다시 시작해도 열리지 않습니다

완벽하게 활성화하려면 -e MYSQL_ROOT_PASSWORD=123456을 추가하세요

컨테이너를 삭제하더라도 , 그리고 로컬에 마운트한 데이터 볼륨은 여전히 ​​손실되지 않습니다. 이는 컨테이너 데이터

named mount 및 익명 마운트

anonymous mount

-v 경로의 지속성 기능을 실현합니다. 컨테이너!

docker run -d --name nginx01 -v /etc/nginx nginx

여기서 이것이 익명 마운트라는 것을 발견했습니다. 컨테이너 외부 경로가 아닌 -v 뒤에 컨테이너 내부 경로만 썼습니다.

모든 볼륨의 상태 보기

docker volume ls

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

이름이 mount

입니다. -v 마운트된 볼륨의 이름: 컨테이너의 경로

docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx nginx

여기서 이것이 익명 마운트라는 것을 알 수 있습니다. -v 뒤에 컨테이너에 경로가 기록되어 있으며, 외부 경로는 없습니다. 하지만 이름은

docker의 콘텐츠 디렉터리: /var/lib/dockerDocker는 데이터 볼륨 기술을 요약하고 공유합니다.

디렉터리를 지정하지 않은 docker 컨테이너의 모든 볼륨은 다음 위치에 있습니다. /var/lib/docker /volume/xx/_data

명명된 마운트를 통해 볼륨 중 하나를 쉽게 찾을 수 있으며 볼륨을 사용할 때 가장 일반적으로 사용되는 방법은 명명된 마운트

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

추가 지식

이름이 지정된 마운트와 익명 마운트를 구별하려면 마운트할 경로

-v 컨테이너 내부 경로 #익명 마운트

-v 볼륨 이름: 컨테이너 내부 경로 # 명명된 마운트

-v /컨테이너 외부 경로: 컨테이너 내부 경로 # 마운트할 경로 지정

Extension

-v 컨테이너 경로: ro rw 읽기 및 쓰기 권한 변경

ro readonly 읽기 전용

rw readwrite 읽기 및 쓰기 가능

一旦设置了这个容器权限,容器对我们挂载出来的内容就有限定了

docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx:ro nginx
docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx:rw nginx

Ro 只要看到ro就说明这个路径只能通过宿主机来进行操作,容器内是无法操作的!

初识Dockerfile

dockerfile

dockerfile就是用来构建docker镜像文件的!命令脚本!先体验一下

通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令,每个命令都是一层!

写一个dockerfile

# 创立一个dockerfile文件,名字可以随便的取,最好叫做dockerfile
# 文件中的内容 指令(大写) 参数
FROM centos
VOLUME ["volme01","volume02"]
CMD echo "--------end----------"
CMD /bin/bash
#这里每个指令就是镜像的一层

使用dockerfile生成镜像

docker build -f dockerfile文件位置 -t 镜像名称和版本 镜像生成的位置

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

进入镜像查看详情

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

查看卷的同步目录

docker ps -a

docker inspect 容器id

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

最后测试两个文件夹中是不是同步

同步成功

总结

使用dockerfile构建镜像的方式在我们未来的使用中非常的多,因为我们通常会构建自己的镜像

假设构建镜像时候没有挂载卷,要手动镜像挂载-v

数据卷容器

实际上即使保证的容器之间的数据共享的问题

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

数据卷容器实际上就是被拷贝数据的容器(A- volumes-from ->B,B是数据卷容器)

测试两个镜像之间同步

首先先开三个容器

创建docker01

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

创建docker02  --volumes-from docekr01

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

创建docker03  --volumes-from docekr02

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

查看docker01和docker03之间的数据共享

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

接着我们将docker02删除,查看docker01和docker03之间的数据共享

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

总结:

Docker는 데이터 볼륨 기술을 요약하고 공유합니다.

实现多个mysql之间的数据共享

  docker run -d -p 3310:3306 -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
  docker run -d -p 3310:3306 --volumes-from mysql01 -e MYSQL_ROOT_PASSWORD=123456 --name 
  mysql02 mysql:5.7

总结:

容器之间配置信息的传递。数据卷容器的声明周期一直持续到没有容器使用位置

理解:容器之间只要是共享就会数据copy,即使有的容器被删除,数据依然存在,直到所有共享 的容器都删除,数据才会被彻底删除

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的。

推荐学习:《docker视频教程

위 내용은 Docker는 데이터 볼륨 기술을 요약하고 공유합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제