需求:创建数据库容器 db 和 ubuntu 容器,希望在 ubuntu 容器内能访问 db 容器内的 Mysql 数据库。
目录:
创建一个数据库容器 db,不需要对外暴漏端口。
$ docker run -it -d -e MYSQL_ROOT_PASSWORD=123 --name db mysql:8.0
创建一个 ubuntu 容器,使用 --link 关联 db 容器。
格式:
--link 容器名:别名
$ docker run -it -d --link db:mysql --name ubuntu ubuntu:latest
进入 ubuntu 容器内部,安装 MySQL 客户端,然后使用 MySQL 客户端连接 db 容器内的 Mysql 数据库。
$ docker exec -it ubuntu /bin/bash
# apt update
# apt install -y mysql-client 
# mysql -h db -u root -p123
# 或者使用别名连接也是可以的
# mysql -h mysql -u root -p123
>
创建一个名为 my-network 的桥接网络。
$ docker network create my-network
创建一个数据库容器 db,使用 --network 绑定到 my-network 网络,不需要对外暴漏端口。
$ docker run -it -d -e MYSQL_ROOT_PASSWORD=123 --network my-network --name db mysql:8.0
创建一个 ubuntu 容器,使用 --network 绑定到 my-network 网络。
$ docker run -it -d --network my-network --name ubuntu ubuntu:latest
进入 ubuntu 容器内部,安装 MySQL 客户端,然后使用 MySQL 客户端连接 db 容器内的 Mysql 数据库。
$ docker exec -it ubuntu /bin/bash
# apt update
# apt install -y mysql-client 
# mysql -h db -u root -p123
>
上面介绍的容器互联和桥接网络主要是处理容器与容器之间的通信,如果是本机想要访问容器内的服务,需要端口映射来实现。
创建数据库容器 db,使用 -p 参数将容器内 3306 端口映射到本地的 13306 端口。
$ docker run -it -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123 --name db mysql:8.0
本机需要提前安装好 MySQL 客户端,使用 mysql 命令进行连接。
$ mysql -h 127.0.0.1 -P 13306 -u root -p123
-h 127.0.0.1 一定要加上,不然会报 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' 错误。
↶ 返回首页 ↶