- 重新启动容器并映射端口是不行的
由于你已经有一个名为 mysql-container 的 MySQL 容器,你可以使用 docker start 启动它。想要让3306 端口映射到宿主机是不行的,实际上,端口映射是在容器启动时指定的。你无法在容器已经创建的情况下直接修改端口映射。
因此,最简单的方式是 删除当前容器并重新创建一个容器,确保映射了正确的端口。
1.1 启动并重新创建容器
你可以删除已经停止的容器,并重新启动一个带有端口映射的新容器:
docker rm mysql-container # 删除已经停止的容器
然后,使用 docker run 命令重新创建并启动 MySQL 容器,并将容器的 3306 端口映射到宿主机的 3306 端口:
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:latest
参数解释:
–name mysql-container:指定容器名称。
-e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL root 用户的密码为 my-secret-pw,可以根据需要修改密码。
-p 3306:3306:将容器内的 3306 端口映射到宿主机的 3306 端口。这样你就可以通过宿主机的 localhost:3306 连接到 MySQL。
-d:让容器在后台运行。
1.2 重新启动并检查容器
如果容器没有被删除,你也可以直接重新启动它,但你无法改变已经映射的端口。首先尝试重新启动容器:
docker start mysql-container
然后,使用 docker ps 查看是否启动成功并映射了端口:
docker ps
输出会显示容器的状态以及端口映射。
-
修改端口映射(如果容器已创建)是不可行的
如果你已经创建了一个容器,但想修改端口映射,只能通过删除原来的容器并重新创建一个容器来实现。这是因为容器的端口映射在容器创建时就被确定了,不能在容器已经启动的情况下更改。 -
新建一个mysql容器mysql-container2并指定端口映射
docker run --name mysql-container2 -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:latest
C:\Users\Administrator>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a92e31d7ce8d mysql:latest “docker-entrypoint.s…” 14 minutes ago Up 14 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-container2
374d25dc3768 mysql:latest “docker-entrypoint.s…” 35 minutes ago Up 16 minutes 3306/tcp, 33060/tcp mysql-container -
验证登录mysql数据库
4.1容器内登录
E:\workspace_docker>docker exec -it mysql-container2 bash
bash-5.1# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 9.2.0 MySQL Community Server - GPL
Copyright © 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
±-------------------+
4 rows in set (0.00 sec)
mysql>
4.2外部宿主机上登录
总结
你可以通过 docker run 命令重新创建并启动容器,同时确保端口映射到宿主机的 3306 端口。
如果容器已经停止并且不再需要它,可以先使用 docker rm 删除容器,然后重新创建。
端口映射必须在容器启动时指定,无法修改正在运行的容器的端口映射。