docker network create my_network_1
首先,你需要创建一个新的自定义网络。你可以选择创建一个 bridge 类型的网络(这是默认的网络类型),或者创建其他类型的网络(例如 host 或 overlay,这取决于你的需求)。
docker network create my_custom_network
这个命令会创建一个名为 my_custom_network 的自定义网络。
你可以使用 docker network connect 命令将已存在的容器连接到这个新创建的自定义网络。
docker network connect my_custom_network <container_name_or_id>
替换 <container_name_or_id> 为你要连接的容器的名称或 ID。例如,如果你的容器名为 mysql-container,则命令是:
docker network connect my_custom_network mysql-container
docker network connect my_network_1 mysql_8.0
你可以使用以下命令来检查容器是否已成功连接到自定义网络:
docker inspect <container_name_or_id>
docker inspect mysql_8.0
查看输出中的 Networks 部分,确认容器是否已连接到 my_custom_network 网络。例如:
json复制代码"Networks": {
"bridge": {
"NetworkID": "xyz123",
"EndpointID": "abc456",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
},
"my_custom_network": {
"NetworkID": "my_custom_network_id",
"EndpointID": "custom_endpoint_id",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:12:00:02",
"DriverOpts": null
}
}
如果你在 Networks 部分看到 my_custom_network,说明容器已经成功连接到该网络。
如果你想将容器从自定义网络断开,可以使用以下命令:
docker network disconnect my_custom_network <container_name_or_id>
docker run 启动时没有指定 --network 参数,默认会连接到 bridge 网络。你可以使用 docker network connect 将容器从默认网络连接到其他网络。my-app-container 连接到 mysql-container现在,你可以从 my-app-container 通过容器名 mysql-container 访问 MySQL 服务。例如,使用 Python 连接 MySQL:
python复制代码import mysql.connector
# 使用容器名称 'mysql-container' 作为主机
connection = mysql.connector.connect(
host='mysql-container', # 容器名
port=3306, # 默认 MySQL 端口
user='root',
password='my_password',
database='your_database'
)
cursor = connection.cursor()
cursor.execute("SELECT DATABASE();")
print(cursor.fetchone())
connection.close()
在这个例子中,host 使用的是 MySQL 容器的名称 mysql-container,而不是 IP 地址,因为 Docker 会在同一网络内通过容器名解析 IP 地址。
使用 ALTER USER 语句将用户的身份验证插件更改为 mysql_native_password,并为用户设置一个密码(如果你还没有设置密码):
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
root:这是用户名,替换为你实际使用的用户名。your_password:这是你要设置的密码。你可以将 root 替换为其他用户,例如 'myuser',如果你使用的是其他用户进行连接。
刷新权限 在更改完用户的身份验证插件后,执行以下命令来刷新权限:
FLUSH PRIVILEGES;
退出 MySQL 完成后,退出 MySQL