我正在尝试为master-> slave复制运行两个不同的mysql容器。我首先构建并运行master:
docker build --no-cache -t mysql-master .
docker run -it --name mysql-master -h mysql-master -p 3306:3309 mysql-master /bin/bash
哪个工作正常并正确运行容器。我可以获得设置第二个容器mysql-slave的信息。当我运行以下命令时:
docker build --no-cache -t mysql-slave .
docker run -it -p 3308:3309 mysql-slave --name mysql-slave --link mysql-master:mysql-slave /bin/bash
mysql-master容器断开连接。我不确定为什么,但我确信容器中存在某些我可能不知道的冲突。谁能建议我应该运行什么docker命令才能让两个容器同时运行?
我有一种感觉,这是因为两个容器都试图访问同一个端口:
root@test2net:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d1942b5e1f69 mysql-slave:latest "/tmp/makeSlaveSQL.s 40 seconds ago Up 40 seconds 3306/tcp, 0.0.0.0:32773->3307/tcp mysql-slave
c9a7632d9cae mysql-master:latest "/tmp/makeMasterSQL. 2 minutes ago Up 2 minutes 0.0.0.0:32769->3306/tcp mysql-master
是否有办法将每个容器显式转换为特定端口。我已尝试在Dockerfile中使用EXPOSE,并-p
指定不同的端口,但正如您从上面所看到的,mysql-slave仍然绑定到端口3306。