【问题标题】:Drupal Container not connecting to MariaDB containerDrupal 容器未连接到 MariaDB 容器
【发布时间】:2020-06-20 06:35:53
【问题描述】:

操作系统: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 的工作原理。所以我可能会尝试以艰难的方式做到这一点(我还不知道),但我只想在学习新事物之前弄清楚这一点。

谢谢。

【问题讨论】:

    标签: docker drupal mariadb firewalld


    【解决方案1】:

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

    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

    第一个命令会将 Docker 接口添加到允许 Docker 进行远程连接的可信环境。第二个命令将允许 docker 建立本地连接。这在多个 Docker 容器作为开发环境时特别有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 2021-11-15
      相关资源
      最近更新 更多