Docker 是一种虚拟化技术,它能够帮助我们轻松地运行多个容器。多个容器之间相互隔离、独立运行,但是有时需要让多个容器之间进行交互和通信。
下面我们来学习如何连接多个 Docker 容器。
# 创建一个网络 docker network create mynetwork # 在 mynetwork 网络中运行一个 MySQL 容器 docker run -d --name mysql --net mynetwork -e MYSQL_ROOT_PASSWORD=123456 mysql # 在 mynetwork 网络中运行一个 Web 容器 docker run -d --name web --net mynetwork -p 80:80 nginx
在上面的代码中,我们创建了一个名为 mynetwork 的网络,并启动了两个容器:mysql 和 web。两个容器都加入了 mynetwork 网络,这意味着它们可以相互通信。
接下来,我们需要在 Web 容器中配置数据库连接信息,才能让 Web 应用程序访问 MySQL 数据库。
# 进入 Web 容器 docker exec -it web /bin/bash # 编辑配置文件 vi /etc/nginx/conf.d/default.conf # 在 default.conf 中添加以下内容 location /mysql { proxy_pass http://mysql:3306; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # 重启 nginx 服务 service nginx restart
在上面的代码中,我们进入了 Web 容器,并编辑了其内置的 Nginx 配置文件 default.conf。我们添加了一个名为 /mysql 的 location,指向 MySQL 容器的 3306 端口。这样,在 Web 容器中访问 /mysql 就相当于访问了 MySQL 容器的数据库。
最后,我们需要测试一下我们的容器是否连接成功。
# 进入 Web 容器 docker exec -it web /bin/bash # 安装 mysql 客户端工具 apt-get update && apt-get install -y mysql-client # 连接 MySQL 数据库 mysql -h mysql -u root -p # 输入密码,登录 MySQL 数据库 Enter password: 123456 # 成功登录后,就可以执行 SQL 语句啦
在上面的代码中,我们进入了 Web 容器,并安装了 mysql 客户端工具。接着,我们使用 mysql 命令连接 MySQL 数据库,并成功登录后,我们可以执行一些 SQL 语句来测试连接是否成功。
到此,我们就成功地连接了多个容器,并能在这些容器之间进行通信和交互。