关于同一主机内创建多个相同的容器,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回答

麦兜搞IT

2020-04-30

您为啥要共用volume呢?如果您要尝试mysql的HA,可以试试mysql的master,slave模式


https://www.toptal.com/mysql/mysql-master-slave-replication-tutorial

0
1
爱吃apple的阿狸
非常感谢!
2020-04-30
共1条回复

系统学习Docker 践行DevOps理念

无论你是开发、测试还是运维,Docker都是你的必备技能。

3297 学习 · 1895 问题

查看课程