Docker 中修改mysql容器端口映射


Docker中修改mysql容器端口映射

一、问题描述:

我本地有一个mysql,端口是3306,然后我用docker开启了一个mysql容器,端口还是3306,导致我用docker上的mysql的时候没法用,于是想到端口映射出了问题,就把docker上的mysql的端口修改一下。

二、可解决问题:

(1) 在不删除现有容器的情况下, 修改原有容器的端口映射; (2) 创建容器的时候指定了一个端口映射, 但是创建之后的容器存在多个端口映射;

三、解决方案1 不删除容器情况下:

1、停止容器

docker stop 容器id

2、停止docker服务

systemctl stop docker

3、修改这个容器的hostconfig.json(对应下面的文件1)的端口

cd /var/lib/docker/containers
vim hostconfig.json

找到 “PortBindings”,并且修改如下:(我把3306改成了3308)

"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3308"}]}

4.重启docker服务

systemctl start docker

5.重启mysql容器

docker start mysql容器名或mysql容器ID
四、解决方案2 :

停止服务,删除容器,重新创建容器,重新创建一个容器时文件路径挂载保持一致即可

docker stop c_mysql
docker -rm -f c_mysql

重新创建一个mysql容器

docker run -id \
-p 3308:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6

以上 -v 参数保持一致即可。

教程