swarm 使用 local volume
本节源码,两个文件docker-compose.yml
version: "3.8"services:db:image: mysql:5.7environment:- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_passsecrets:- mysql_passvolumes:- data:/var/lib/mysqlvolumes:data:secrets:mysql_pass:file: mysql_pass.txt
mysql_pass.txt
vagrant@swarm-manager:~$ more mysql_pass.txtabc123vagrant@swarm-manager:~$
使用local volume
使用docker stack创建服务,服务在worker2
[vagrant@swarm-manager ~]$ lsdocker-compose.yaml mysql_pass.txt[vagrant@swarm-manager ~]$[vagrant@swarm-manager ~]$[vagrant@swarm-manager ~]$ docker stack deploy --compose-file docker-compose.yaml dbCreating network db_defaultCreating secret db_mysql_passCreating service db_db[vagrant@swarm-manager ~]$[vagrant@swarm-manager ~]$ docker stack lsNAME SERVICES ORCHESTRATORdb 1 Swarm[vagrant@swarm-manager ~]$ docker service lsID NAME MODE REPLICAS IMAGE PORTSj6wqdraaxnkt db_db replicated 0/1 mysql:5.7[vagrant@swarm-manager ~]$[vagrant@swarm-manager ~]$ docker service ps db_dbID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSl6ogf9p9o0cl db_db.1 mysql:5.7 swarm-worker2 Running Running 15 seconds ago[vagrant@swarm-manager ~]$
在worker2中查看volume
[vagrant@swarm-worker2 ~]$ docker container lsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES584b0fe14812 mysql:5.7 "docker-entrypoint.s…" 20 seconds ago Up 20 seconds 3306/tcp, 33060/tcp db_db.1.l6ogf9p9o0cl6ug8j5mp32i3g[vagrant@swarm-worker2 ~]$[vagrant@swarm-worker2 ~]$ docker volume lsDRIVER VOLUME NAMElocal db_data
在其他节点查看volume是没有的
[vagrant@swarm-worker1 ~]$ docker volume ls DRIVER VOLUME NAME [vagrant@swarm-worker1 ~]$ [vagrant@swarm-manager ~]$ docker volume ls DRIVER VOLUME NAME [vagrant@swarm-manager ~]$查看volume目录
[vagrant@swarm-worker2 ~]$ docker container inspect 58 | grep Source "Source": "db_data", "Source": "/var/lib/docker/volumes/db_data/_data", [vagrant@swarm-worker2 ~]$ [vagrant@swarm-worker2 ~]$ sudo ls /var/lib/docker/volumes/db_data/_data auto.cnf ca.pem client-key.pem ibdata1 ib_logfile1 mysql private_key.pem server-cert.pem sys ca-key.pem client-cert.pem ib_buffer_pool ib_logfile0 ibtmp1 performance_schema public_key.pem server-key.pem删除stack,volume依旧存在,实现数据持久化
``` [vagrant@swarm-manager ~]$ docker stack rm db Removing service db_db Removing secret db_mysql_pass Removing network db_default [vagrant@swarm-manager ~]$ [vagrant@swarm-manager ~]$ [vagrant@swarm-manager ~]$ docker stack ls NAME SERVICES ORCHESTRATOR [vagrant@swarm-manager ~]$ [vagrant@swarm-manager ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS
[vagrant@swarm-worker1 ~]$ [vagrant@swarm-worker1 ~]$ docker volume ls DRIVER VOLUME NAME [vagrant@swarm-worker1 ~]$ ```
