使用主机网络运行具有不同端口的多个mysql容器

时间:2018-11-16 21:11:35

标签: mysql docker

我有一个使用默认端口3306在主机上运行的Mysql服务器。我想使用网络主机但端口不同来运行MySQL docker容器。

我的配置在docker-compose文件中定义。生成映像并尝试运行容器后,它将启动并关闭,并显示端口冲突通知。

是否有一种在启动之前动态更改容器端口的方法?我不想使用网桥。

2 个答案:

答案 0 :(得分:0)

如果使用主机网络是一项硬性要求,那么Doc​​ker空间中的任何内容都无法控制或限制服务使用或不使用的端口。您需要更改特定于服务的配置文件,环境变量或命令行参数,以使其在其他位置进行侦听。

尤其是对于侦听单个TCP端口的服务器(如大多数基于数据库和基于HTTP的服务器),默认的Docker桥/ NAT设置应该可以正常工作;不需要主机网络和macvlan等替代设置。如果您愿意使用标准设置,那么这很简单:

version: '3'
services:
  mysql:
    image: mysql
    ports: ['9999:3306'] # listen on host port 9999 instead

答案 1 :(得分:0)

docker run --name 'dockername' -e MYSQL_ROOT_PASSWORD='password' -p 1000:3306 -d mysql
docker exec -it 'dockername' mysql -uroot -p
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'
flush privileges;

这里的 1000 是您要运行 mysql docker 容器的端口。