首页 > 解决方案 > Drupal 容器未连接到 MariaDB 容器

问题描述

操作系统:CentOS 8

Docker 容器:drupal:latest & mariadb:latest

近两个星期以来,我一直在尝试通过将 Drupal 容器连接到 MariaDB 容器来学习 Docker 容器化,但不知道出了什么问题。

我刚跑: systemctl stop firewalld它终于奏效了!是的,我知道这是一件坏事,这就是我来这里的原因。我发现的教程都没有提到为 docker 打开防火墙端口。

我确实找到了一些在线教程,专门用于打开 docker 服务,但没有一个有效。他们中的大多数人告诉我运行: firewall-cmd --permanent --zone=trusted --add-interface=docker0,但这没有用。只有当我完全关闭防火墙时,安装才真正开始工作。

谁能解释我需要运行什么来保持防火墙运行,但允许容器相互通信?如果您简要解释每个命令的作用,这也会有所帮助,因为防火墙规则对我来说仍然有点神秘。

这是我运行的设置:

docker network create -d bridge meow

docker run \
-e MYSQL_ROOT_PASSWORD=admin \
-e MYSQL_DATABASE=drupal \
-e MYSQL_USER=drupal \
-e MYSQL_PASSWORD=drupal \
--network meow \
--name mariadb \
-d mariadb:latest
docker run \
-p 80:80 \
--network meow \
--name drupal \
-d drupal:latest

systemctl stop firewalld

请注意,在添加 docker-compose 等新工具之前,我想了解 docker 的工作原理。所以我可能正在努力做到这一点(我还不知道),但我只想在学习新事物之前弄清楚这一点。

谢谢。

标签: dockerdrupalmariadbfirewalld

解决方案


好的,由于某种原因,这行得通。

firewall-cmd --permanent --zone=trusted --change-interface=docker0

firewall-cmd --permanent --zone=public --add-masquerade

firewall-cmd --reload

systemctl restart docker

更新:我发现了一些有助于解释为什么这样有效的信息:

Docker 和 Fedora 32

The first command will add the Docker-interface to the trusted environment which allows Docker to make remote connections. The second command will allow docker to make local connections. This is particularly useful when multiple Docker containers are in as a development environment.


推荐阅读