gpt4 book ai didi

docker - 使用 Docker 容器

转载 作者:行者123 更新时间:2023-12-02 20:52:12 26 4
gpt4 key购买 nike

我正在尝试了解如何使用 Docker,现在已经在 Ubuntu 14.04 机器上安装了 Docker。我想要做的是在堆栈组合之间轻松切换。典型堆栈

  • Ubuntu + MariaDB + Apache + PHP
  • CentOS + 同上
  • Ubuntu + MongoDB + Nginx + PHP

  • 到目前为止,从我对文档的阅读来看,我相信我可以通过两种方式做到这一点
  • 为每个容器加载单独的容器 - Ubuntu 1 个,MariadB 1 个,Apache + PHP 1 个 - 并将它们链接在一起
  • 为整个批处理定义一个容器 - 即每个发行版一个容器 + 数据库 + 服务器...

  • 我还没有完全明白的是 - 当我使用这样的系统并且数据库受到更改时,我希望能够在下次我重用相同的配置时将这些更改到位。这需要我将容器保存为 tar 存档,然后在需要时加载它?在那种情况下,至少将那些可能被用户修改的容器作为单独的链接容器是有意义的吗?
    最后 - 假设我已经启动并运行了完整的堆栈(无论是作为单独的链接容器还是作为一个大型容器)。现在我浏览到安装它的 IP 地址。基本的 Ubuntu 盒子没有安装网络服务器。我会自动到达在 Docker 容器内运行的 Apache 实例,还是我需要以某种方式告诉系统需要这样做?
    我是 Docker 初学者,所以我的一些问题可能相当幼稚。

    最佳答案

    我在这件事上的 2 美分是你应该与 合作。单独的链接容器 - 这就是 Docker 的方式。一个容器通常托管一个应用程序(例如数据库或 Web 服务器)。

    当您使用需要持久数据的应用程序(例如数据库)时,您可以在 docker 容器上挂载卷。这可以通过 docker run 命令的 -v 标志来实现。

    docker run -v /some/local/dir:/some/dir/in/container my/mariadb

    这意味着容器文件夹/some/dir/in/container 中的数据被映射到主机系统的本地文件夹,因此当您重新启动容器时,数据仍然可用。还有其他可以使用的最佳实践,例如数据卷和 --volumes-from 标志。所有这些都在 docker docs 中进行了描述。和 docker run reference .

    如果您使用 Web 服务器(在您的情况下为 Apache)启动容器, EXPOSE指令可用于公开例如容器上的 80 端口。要将其链接到主机系统,需要通过 -p 或 -P 进行端口链接。 -p 标志可以这样使用:
    docker run -p 80:80 my/apache

    上面的命令将主机上的 80 端口链接到容器上的 80 端口。您还可以使用 -p 标志绑定(bind)到特定的主机接口(interface)(例如 127.0.0.1)。更多关于端口映射的信息可以在 docker docs 中找到。以及 Linking Containers 下部分。

    关于docker - 使用 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577210/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com