关于同一主机内创建多个相同的容器,volume共用的问题
来源:7-3 Service的创建维护和水平扩展
爱吃apple的阿狸
2020-04-29
老师, 我在一台实例内 docker stack 创建一组mysql容器, replication 为2 , 相当于docker run 了两个mysql 容器
我配置文件docker-compose.yml上部分内容:
volumes:
- mysql-data:/var/lib/mysql
- /etc/mysql/conf.d:/etc/mysql/conf.d
deploy:
replicas: 2
意味着这两个容器启动,都是用的同一个 mysql-data 的volume 作为主目录~,然后我就发现第一个启动的mysql容器能正确 mysql -uroot -p 进入命令行 ,而第二个容器就不能进入mysql命令行, 报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
我如果不定义volume ,那容器会自己生成随机字符串的volume,两个容器就不会重复,都能进入
应该就是两个容器公用volume的问题,
请问下,那我如何在docker-compose.yml 文件中对这种volume改名呢~,
比如能不能让他在scale时,volume名也可以带个参数自增 mysq-data1 mysql-data2
写回答
1回答
-
您为啥要共用volume呢?如果您要尝试mysql的HA,可以试试mysql的master,slave模式
https://www.toptal.com/mysql/mysql-master-slave-replication-tutorial
012020-04-30
相似问题