Drupal 容器未连接到 MariaDB 容器

Drupal Container not connecting to MariaDB container

OS: 分OS 8

Docker 容器:drupal:latest & mariadb:latest

近两周来,我一直在尝试通过将 Drupal 容器连接到 MariaDB 容器来学习 Docker 容器化,但无法弄清楚哪里出了问题。

我只是 运行: systemctl stop firewalld 终于成功了!是的,我知道这是一件坏事,这就是我来这里的原因。 None 我发现的教程中提到了为 docker 打开防火墙端口的任何内容。

我确实找到了一些在线教程,专门用于打开 docker 服务,但其中 none 有效。他们中的大多数告诉我 运行: 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 的工作原理。所以我可能会尝试以困难的方式做到这一点(我还不知道),但我只想在学习新事物之前弄清楚这一点。

谢谢。

好的,出于某种原因,这奏效了。

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

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

firewall-cmd --reload

systemctl restart docker

更新:我发现了一些有助于解释其工作原理的更多信息:

Docker and 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.