docker挂载本地目录并映射端口,生产环境中的docker部署方案(多端口多容器)

本文解决两个问题:

1.如何在启动docker的时候将本地目录挂载到docker运行容器中?

2.如何在生产环境中进行docker的部署?部署前相比于传统的部署方式有哪些优缺点?

开始:

1.如何在启动docker的时候将本地目录挂载到docker运行容器中?

在之前的文章中讲到过,连接镜像的命令为:

#docker run -i -t -v /root/software/:/mnt/software/  --privileged=true  feac5e /bin/bash

而以守护进程的方式启动命令为:

#docker run -d -p 58080:8080 --name tomcat1 sdzn.com/tomcat:0.1 /root/run.sh

通过对比可以发现,docker在启动的最后是用IMAGE_ID/REPOSITORY:TAG并加上需要在容器中运行的命令结束,前面都是加上各种启动参数,比如端口映射和目录映射等。

于是输入这样的命令:

#docker run -i -t -v /root/software/:/mnt/software/  --privileged=true -d -p 58080:8080 --name tomcat1 sdzn.com/tomcat:0.1 /root/run.sh

发现容器启动成功,初步证明加入路径映射对容器启动是没有问题的。但是还无法验证映射是否成功,加入一个测试项目将其映射到镜像的tomcat/webapps目录下进行测试。

我们先停止并删除容器。

在本地的/root/tomcat/webapps下将ROOT改为ROOT1,其它项目删除,我们来做映射然后启动。

#docker run -i -t -v /root/tomcat/webapps/ROOT1/:/opt/tomcat/webapps/ROOT1/  --privileged=true -d -p 58080:8080 --name tomcat1 sdzn.com/tomcat:0.1 /root/run.sh

我们发现这样是可以访问的http://127.0.0.1:58080/ROOT1/

2.如何在生产环境中进行docker的部署?部署前相比于传统的部署方式有哪些优缺点?

通过上述实验,我们可以考虑打包这样一个程序包,包中包含:程序发布的war包/解压后的tomcat、镜像文件、启动脚本。

基本思路是:tomcat作为外部路径引入镜像中运行,日志什么的也是记录到外部的tomcat中进行运行,每个项目一个镜像文件,当需要增加容器的时候,直接带参数多启动一个容器即可,尤其是对于需要动态扩容的服务来说,非常方便。

但同时有一个疑问,对于docker对外提供的服务来讲,如果在启动的时候端口没有对外提供映射就比较麻烦,所以在启动的时候需要有严格的部署和端口规划。

可参考以下的多容器多端口映射方案:

http://blog.csdn.net/meegomeego/article/details/50707621



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章