一个testing服务器的Docker体系结构

我目前正在看Docker看看它能为我做些什么。 我使用的是一个testing/开发服务器,将运行例如Tomcat&My-SQL。 我不明白的是设置这个最好的方法是什么?

我是否为TomCat创build一个图像,为MySQl创build另一个图像? 或者我把它们放在同一个图像中?

如果是单独的图像,他们应该是单独的容器?

build议将数据库和Web服务器隔离到自己的容器,或者模拟您的架构在prod中的样子,这可能是Web和数据库的独立容器。

如果您select单独的容器,则需要研究/学习的关键点:

  1. 按照他人的build议使用预定义的图像
  2. 在Docker中使用传统的LINK链接容器,或将它们放在同一个networking下(查找容器networking)
  3. 使用Docker Compose使容器协调更容易,因此您不必自己手动启动容器,因为容器数量越多,可能会越麻烦。

我希望这有帮助。 祝你有美好的一天。

是的,利用每个应用程序的预先存在的图像。 你可以从Docker Hub获得“官方”的。

如果您有能力,只需安装具有您select的Linux风味的虚拟机即可。 select适合该风味的Docker包。

然后在Docker Hub上浏览一些你可能会觉得有用的图片,按照他们的指示开始,然后你就离开了!

潜入文档 – 也许去拿几本书。

总是,你会从类似的东西开始

docker pull <image> docker run <options> <image> 

<image>是您从Hub获得的Docker镜像 – mySQL和Tomcat。 <options>是多种多样的,将取决于你想要做什么,你会试验。

你的情况的具体例子:

 docker pull mysql docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag docker pull tomcat:8.0 docker run -it --name tomcat --link some-mysql:mysql -p 8888:8080 tomcat:8.0 

这将启动mySQL,然后启动Tomcat,同时将这两个容器连接在一起。 只是为了告诉你可以做些什么。

请注意,从Hub下载新映像时,不必先运行docker pull 。 我通常会对图像标签/版本有更多的控制。

首选的方法是使用Docker Hub的官方图像。 MySQL https://hub.docker.com/ / mysql / Tomcat https://hub.docker.com/ / tomcat /

那么,如果你想长时间保存MySQL中的数据,你将需要另一个“数据容器”来存储MySQL数据。 否则,每次重新创buildMySQL容器时,都将丢失所有数据库。

你可以像启动MySQL容器一样简单

 docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=[put your password] mysql 

和Tomcat容器一样容易

 docker run -d -p 8888:8080 --link mysql:mysql tomcat:8.0 

然后你可以从tomcat应用程序中简单的引用你的mysql服务器(如mysql) (这个主机名将parsing为正确的IP)