docker mysql on different port
docker mysql on different port
我想要更改mysql docker容器的默认暴露端口,但是如果我尝试使用以下命令:
docker run --detach --name=test-mysql -p 52000:52000 --env="MYSQL_ROOT_PASSWORD=mypassword" mysql
它不起作用。
mysql -uroot -pmypassword -h 127.0.0.1 -P 52000 警告:在命令行接口上使用密码可能不安全。 ERROR 2013 (HY000):与MySQL服务器的连接丢失,'reading initial communication packet',系统错误:0
如果我使用标准端口3306:3306,则正常工作,但我想要更改端口。这是可能的吗?
我已经尝试过 -p 52000:3600 ,但我总是得到:
mysql -uroot -pmypassword -h 127.0.0.1 -P 52000 警告:在命令行接口上使用密码可能不安全。 ERROR 2013 (HY000):与MySQL服务器的连接丢失,'reading initial communication packet',系统错误:0
问题的出现原因是因为需要将容器的端口3306映射到服务器上的偏好TCP端口上。解决方法是通过在docker run命令中使用"-p
对于mysql来说,可以使用以下命令来运行容器并进行端口映射:
docker run --detach --name=test-mysql -p 52000:3306 --env="MYSQL_ROOT_PASSWORD=mypassword" mysql
然后可以使用以下命令来连接到mysql:
mysql -uroot -pmypassword -h 127.0.0.1 -P 52000
如果连接失败,可能是因为IP地址不正确。在上述命令中,52000端口映射到了服务器的公共IP地址上,这意味着无法使用127.0.0.1来访问。如果要从外部访问容器,需要使用服务器的IP地址加上端口号52000来进行访问,这个地址会在内部解析为容器的IP地址加上端口号3306。
如果真的需要修改容器的端口(尽管不清楚为什么要这样做),可以编辑Dockerfile文件,将端口暴露出来。然后可以在容器内部使用"-P 52000"参数来访问。
Docker是一个开源的应用容器引擎,可以将应用程序及其依赖项打包为一个独立的容器,从而实现快速部署和移植的目的。在使用Docker部署MySQL时,有时会遇到需要在不同端口上运行MySQL的情况。本文将介绍出现这个问题的原因以及解决方法。
在Docker中,我们可以使用docker run
命令来启动一个MySQL容器,并通过映射端口的方式将容器内部的MySQL服务端口映射到宿主机的某个端口。但是,有时我们希望MySQL服务直接在容器内部的另一个端口上运行,而不是通过映射端口的方式。这时,可以使用MYSQL_TCP_PORT
环境变量来指定MySQL服务的端口。
下面是一个示例命令:
docker run --detach --name=test-mysql --env="MYSQL_TCP_PORT=52000" mysql
通过在docker run
命令中添加--env="MYSQL_TCP_PORT=52000"
参数,我们可以将MySQL服务端口设置为52000。这样,在启动MySQL容器时,MySQL服务将直接在52000端口上运行。
需要注意的是,虽然在官方的Docker MySQL镜像资源中没有明确提到MYSQL_TCP_PORT
环境变量,但实际上它是存在的,并且可以正常工作。另外,即使在使用docker-compose时,官方文档也没有提及MYSQL_TCP_PORT
环境变量,但同样可以使用该环境变量来指定MySQL服务的端口。
通过以上方法,我们可以在Docker中灵活地控制MySQL服务的端口,实现多个MySQL实例的同时运行,或者将MySQL服务与其他服务分离在不同的端口上运行,从而满足不同的需求。
总结一下,本文介绍了在Docker中运行MySQL服务时,如何通过MYSQL_TCP_PORT
环境变量来指定MySQL服务的端口。通过这种方式,我们可以在不同端口上同时运行多个MySQL实例,或者将MySQL服务与其他服务分离在不同的端口上运行。尽管官方文档中没有明确提到MYSQL_TCP_PORT
环境变量,但实际上它是存在的,并且可以正常工作。