使用Docker容器

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

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

从我到目前为止的文档阅读中,我相信我可以通过两种方式做到这一点

  1. 为每个装载单独的容器 – 对于Ubuntu来说,1个是对于MariadB,对于Apache + PHP是1个,将它们连接在一起
  2. 为整个批次定义一个容器 – 即每个发行版+ db +服务器一个容器…

我还没有得到的是这样的 – 当我使用这样的系统并且数据库经历了更改时,我希望在下一次重新使用相同的configuration时能够进行这些更改。 这将需要我将容器保存为tar档案,然后在需要时加载它? 在这种情况下,将至less那些容易被用户修改为独立的连接容器的容器是有意义的。

最后 – 假设我有完整的堆栈并运行(可以将其作为单独的链接容器或一个大型容器)。 现在我浏览到所有安装的IP地址。 基本的Ubuntu盒子没有安装networking服务器。 我会到达在Docker容器中自动运行的Apache实例,还是需要告诉系统需要这样做?

我是一个Docker新手,所以我的一些问题可能是相当天真的。 不过,我非常感谢任何帮助。

我关于这个问题的2分钱是,你应该使用单独的链接容器 – 这只是Docker的方式 。 一个容器通常托pipe一个应用程序(如数据库或Web服务器)。

当您使用需要持久数据的应用程序(例如数据库)时,要在容器上安装卷。 这可以通过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标志绑定到特定的主机接口(如127.0.0.1)。 有关端口映射的更多信息可以在docker文档中find,也可以在Linking Containers部分下find。

为上述每个装载单独的容器并将它们连接在一起

这将导致3个Dockerfiles,在每个EXPOSE命令中,这样,当你的容器在电脑上时,如果启动http://localhost/1234 (这是一个例子),你将访问你第一个容器MariaDB + Apache + PHP),并使用http://localhost/2345您将达到CentOS +同上,依此类推。

看一下

https://docs.docker.com/reference/builder/#expose

看看

docker检查 – 格式“{{.NetworkSettings.IPAddress}}”容器