六十五、Docker Swarm-使用local volume
2022-01-16 本文已影响0人
InsaneLoafer
swarm 使用 local volume
本节源码,两个文件
docker-compose.yml
version: "3.8"
services:
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_pass
secrets:
- mysql_pass
volumes:
- data:/var/lib/mysql
volumes:
data:
secrets:
mysql_pass:
file: mysql_pass.txt
mysql_pass.txt
vagrant@swarm-manager:~$ more mysql_pass.txt
abc123
vagrant@swarm-manager:~$
使用local volume
- 使用docker stack创建服务,服务在worker2
[vagrant@swarm-manager ~]$ ls
docker-compose.yaml mysql_pass.txt
[vagrant@swarm-manager ~]$
[vagrant@swarm-manager ~]$
[vagrant@swarm-manager ~]$ docker stack deploy --compose-file docker-compose.yaml db
Creating network db_default
Creating secret db_mysql_pass
Creating service db_db
[vagrant@swarm-manager ~]$
[vagrant@swarm-manager ~]$ docker stack ls
NAME SERVICES ORCHESTRATOR
db 1 Swarm
[vagrant@swarm-manager ~]$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
j6wqdraaxnkt db_db replicated 0/1 mysql:5.7
[vagrant@swarm-manager ~]$
[vagrant@swarm-manager ~]$ docker service ps db_db
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
l6ogf9p9o0cl db_db.1 mysql:5.7 swarm-worker2 Running Running 15 seconds ago
[vagrant@swarm-manager ~]$
- 在worker2中查看volume
[vagrant@swarm-worker2 ~]$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
584b0fe14812 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 ls
DRIVER VOLUME NAME
local 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 ~]$