>운영 및 유지보수 >Docker >Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

WBOY
WBOY앞으로
2022-01-21 18:15:431956검색

이 기사는 Docker의 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 관련 지식을 제공합니다.

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

1. Docker 데이터 볼륨이란 무엇입니까?

  • 데이터 볼륨은 공동 파일 시스템을 우회할 수 있는 하나 이상의 컨테이너에 특별히 지정된 디렉터리입니다.
    볼륨은 데이터 지속성을 위해 설계되었으며 컨테이너의 수명 주기와 독립적입니다.

  • 따라서 Docker는 컨테이너가 삭제될 때 데이터 볼륨을 자동으로 삭제하지 않으며 컨테이너에서 더 이상 사용하지 않는 볼륨을 적극적으로 "가비지 수집"하지 않습니다.

  • 데이터 볼륨의 존재는 컨테이너의 데이터를 지속시키고 컨테이너 간 데이터 공유를 가능하게 하기 위한 것입니다.

  • 일반인의 관점에서 도커 컨테이너 데이터 볼륨은 우리 생활에서 흔히 사용하는 USB 플래시 드라이브라고 볼 수 있습니다. 하나 이상의 컨테이너에 존재하며 도커에 의해 컨테이너에 마운트되지만, 컨테이너에 속하지는 않습니다. 공동 파일 시스템. Docker는 컨테이너가 삭제될 때 탑재된 데이터 볼륨을 삭제하지 않습니다.

2. 데이터 볼륨을 사용하는 이유

docker 계층형 파일 시스템:

  • 성능 저하
  • 수명 주기는 컨테이너와 동일합니다.

docker 데이터 볼륨:

  • 호스트에 마운트 레이어링 파일 시스템
  • 은 컨테이너가 삭제된 후에도 여전히 유지됩니다.
  • 로컬 디스크만 컨테이너와 함께 마이그레이션할 수 없습니다. 3. Docker 데이터 볼륨은 두 가지 종류의 볼륨을 제공합니다. . 디렉토리나 파일을 컨테이너에 마운트합니다.

직관적이고 효율적이며 이해하기 쉽습니다.

경로를 지정하려면 -v 옵션을 사용하세요. 형식은 다음과 같습니다.

bind mount 기본 권한은 rw 읽기 및 쓰기이며, 마운트할 때 읽기 전용 ro를 지정할 수 있습니다.

-v 옵션으로 지정한 경로가 없으면 마운트 시 자동으로 생성됩니다.
  • docker 관리 볼륨
  • bind 마운트는 이식성을 제한하는 호스트 파일 시스템 경로를 지정해야 합니다.
  • Docker 관리 볼륨은 마운트 소스를 지정할 필요가 없습니다.
바인드 마운트와 Docker 관리 볼륨의 비교

동일점: 둘 다 호스트 파일 시스템의 특정 경로입니다.

차이점:

4.bind 마운트 application

docker network prune 
docker network ls
docker run -d --name vm1 -v /opt/website:/usr/share/nginx/html nginx
docker ps

docker inspect vm1	#查看到ip为172.17.0.2
curl 172.17.0.2

403 페이지인 것을 발견했습니다: Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

cd /opt/website/
ls	#发现没有默认发布页面
echo www.westos.org > index.html
curl 172.17.0.2

이때 nginx를 방문하면 www.westos.org 콘텐츠가 있을 것입니다:

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

마운트할 때 권한을 지정할 수도 있습니다:

docker run -it --rm -v /opt/website:/data1 -v /etc/passwd:/data2/passwd:ro busybox

기본 권한은 rw 읽기 및 쓰기이므로 index.html의 내용을 변경할 수 있으며 passwd를 읽기 전용으로 지정한 후에는 내용을 수정할 수 없으며 읽기만 가능합니다. Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)


5 .docker 관리 볼륨Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
기존 관리 볼륨 보기:

docker volume ls

컨테이너를 삭제한 후 관리 볼륨이 남아 있는 경우가 있습니다. 그렇지 않으면 리소스를 차지하게 됩니다.

docker volume prune 
docker volume ls
Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

docker run -d --name registry registry
cd /var/lib/docker/volumes/
ls
docker history registry:latest

docker를 통해. 볼륨 컨테이너의 내용을 마운트 지점에 복사할 수 있습니다:

docker run -d --name vm2 -v /usr/share/nginx/html nginx
cd /var/lib/docker/volumes/
ls
cd 674c999f99b7b524d8f5769b65cb5411d11e3fa855da695a5fdd3494e4342d89/
cd _data/
ls	#查看到默认发布目录被复制到了这里

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

docker inspect vm2
curl 172.17.0.3	#nginx默认发布页

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

echo hello docker! > index.html
curl 172.17.0.3	#可以直接在挂载的目录修改默认发布页

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)6. docker 볼륨 플러그인 소개

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시) docker 볼륨은 로컬 유형 드라이버를 사용합니다. 기본값이며 호스트에만 존재할 수 있습니다. 호스트,

교차 호스트 볼륨은 타사 드라이버를 사용해야 합니다

, 다음 링크를 볼 수 있습니다: Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시) https://docs.docker.com/engine/extend/legacy_plugins/#volume- 플러그인

Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix Socket文件,自动发现可用的插件。
当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最终结合Daemon自身的处理完成客户端的请求。

7.convoy卷插件

convoy卷插件支持三种运行方式:devicemapper、NFS、EBS。下面的实验以nfs的运行方式来演示

实验目的:在server1和2底层用nfs来实现数据共享

step1 首先在server1和server2上搭建nfs文件系统:

server1:

yum install -y nfs-utils
systemctl start rpcbind	
mkdir /nfs	#创建共享目录
chmod 777 /nfs	#修改共享目录权限
vim /etc/exports	#编辑共享目录文件,否则将不会被共享出去
/nfs	*(rw,no_root_squash)
systemctl start nfs

注意:rpcbind服务必须是开启的。这是因为:他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。
Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
server2:

yum install -y nfs-utils
systemctl start nfs-server.service
showmount -e server1	#寻找server1的挂载目录
mkdir /nfs
mount server1:/nfs /nfs
df

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
测试:
在server2中:

cd /nfs/
touch file

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
在server1中:

cd /nfs/
ls	#查看到file

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
说明两个节点的/nfs实现同步了

step2 配置convoy环境:
docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。

在server1中:

tar zxf convoy.tar.gz 
cd convoy/
cp convoy* /usr/local/bin/  #将二进制文件加入到PATH路径
mkdir /etc/docker/plugins	#创建docker的插件目录
convoy daemon --drivers vfs --driver-opts vfs.path=/nfs &> /dev/null &
cd /nfs
ls

注意:第一次运行上面的convoy daemon命令的时候,会在/nfs目录下生成一个config文件夹,这个文件夹不要删除,不然客户端的convoy命令就会用不了

echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
#将convoy守护进程开启生成的.sock文件放入/etc/docker/plugins目录下的convoy.spec文件中,docker就可以识别。(其中convoy.spec文件之前是不存在的)
cat /etc/docker/plugins/convoy.spec

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
在server2中同样配置convoy环境:

scp -r server1:convoy .
cd convoy/
cp convoy* /usr/local/bin/  #将二进制文件加入到PATH路径
mkdir /etc/docker/plugins	#创建docker的插件目录
echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
convoy daemon --drivers vfs --driver-opts vfs.path=/nfs &> /dev/null &
cd /nfs
ls

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
step3 创建卷:

docker volume ls
convoy create vol1

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
step4 操作卷:

在server2中运行容器,指定卷为刚才新创建的vol1:

docker run -it --name vm1 -v vol1:/usr/share/nginx/html nginx
docker ps
docker inspect vm1
curl 172.17.0.2	#nginx默认发布页

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)

cd /nfs/
cd vol1/
echo hello convoy > index.html
curl 172.17.0.2

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
在server1中数据也同步了:

cd /nfs/
cd vol1/
cat index.html

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
在ser1中也可以运行容器,也可以用到共享的数据卷

说明:docker引擎默认扫描 /etc/docker/plugins目录中的convoy.spec—>访问/run/convoy/convoy.sock文件—>发起响应的api请求—>把数据写入vol1中—>底层通过nfs进行主机间的数据同步

如何删除通过nfs创建的数据卷,让之后创建的数据卷都是本地的呢?

删除卷:

convoy delete vol1

实现本地驱动:

cd /etc/docker/plugins/
mv convoy.spec /mnt
systemctl restart docker

创建卷:

docker volume create vol1
ls
cd volumes/
ls	#可以看到vol1,默认创建在这个目录下
cd vol1/
ls
cd _data/
ls	#进入该目录,是空的

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
使用卷:

docker run -d --name vm1 -v vol1:/usr/share/nginx/html nginx
docker ps
ls	#看到nginx默认发布目录被挂到这里了

Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)
补充几条命令:

docker container prune	#删除停止的容器
docker volume prune	#删除没有被使用的卷

推荐学习:《docker视频教程

위 내용은 Docker 데이터 볼륨 관리 및 Convoy 볼륨 플러그인에 대한 자세한 소개(상세 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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