我有一个使用默认端口3306在主机上运行的Mysql服务器。我想使用网络主机但端口不同来运行MySQL docker容器。
我的配置在docker-compose文件中定义。生成映像并尝试运行容器后,它将启动并关闭,并显示端口冲突通知。
是否有一种在启动之前动态更改容器端口的方法?我不想使用网桥。
答案 0 :(得分:0)
如果使用主机网络是一项硬性要求,那么Docker空间中的任何内容都无法控制或限制服务使用或不使用的端口。您需要更改特定于服务的配置文件,环境变量或命令行参数,以使其在其他位置进行侦听。
尤其是对于侦听单个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 容器的端口。