Docker怎么搭建简单的应用栈与容器Hello World访问


本篇内容介绍了“Docker怎么搭建简单的应用栈与容器Hello World访问”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!系统环境操作系统版本内核版本docker版本应用栈搭建我们将搭建一个包含6个节点的docker应用栈,其中包括一个代理节点、两个web应用节点、一个主数据库节点及两个从数据库节点。应用栈的具体结构如图所示:获取应用栈节点所需的镜像根据应用栈结构,需要从docker hub获取haproxy、redis和django的镜像:应用栈容器节点互联此处将在ubuntu镜像上启动一个容器,并命名为console,同时将新启动的console容器连接到名为redis的容器上。docker run 命令的 –link选项用于添加连接到一个容器。这里还使用了 –name选项为容器指定名称。关于docker link用法可参考本站《docker如何使用link建立容器之间的连接》应用栈节点启动启动应用栈节点之前先整理应用栈节点的连接过程:启动redis-master容器节点;两个redis-slave容器节点启动时连接到redis-master;两个app容器节点启动时连接到redis-master;haproxy容器节点启动时连接到两个app节点。此外,为了能够从外网访问应用栈,并通过haproxy节点访问应用栈中的app,在启动haproxy节点时使用-p参数将端口暴露给主机。综上,容器启动顺序为:redis-master -》redis slave -》app -》haproxy启动redis容器启动django容器启动haproxy容器说明:启动每个容器时都需分配一个终端。容器启动信息查看:应用栈容器节点配置redis master主数据库容器节点配置我们知道通过volume可以在宿主机和容器之间共享数据,因此可在宿主机上创建和编辑redis的启动配置文件。使用docker inpect命令查看volume挂载情况:可以看出,redis-master的volume在宿主机上为目录/var/lib/docker/volumes/5920a23b5e230a449230bbd4807912793bbc3bab0a05ae085ff95423301f0d6c/_data,在容器中为/data。
执行如下命令创建redis的启动配置文件redis.conf:对于redis主数据库,修改如下模板文件中的几个参数:redis.conf模板下载:在宿主机上创建好启动配置文件后,切换到容器中的/data目录,将redis.conf拷贝到执行工作目录,然后启动redis服务:redis slave从数据库容器节点配置与redis master容器节点类似,在启动redis slave容器节点之后,需要查看vloume信息,并创建启动配置文件。
对于redis从数据库,需要修改如下几个参数:在宿主机上创建好启动配置文件后,切换到容器中的/data目录,将redis.conf拷贝到执行工作目录,然后启动redis服务:redis数据库容器节点测试在redis master和redis slave容器节点的配置和服务启动后,可以通过启动redis的客户端程序来测试数据库。
首先,在redis master容器内,启动redis的客户端程,并存储一个数据:接着,在两个redis slave容器内,分别启动redis的客户端程,查询之前在master数据库中存储的数据:根据响应可知,master数据库中的数据已经同步到slave数据库中。至此,应用栈的数据库部分搭建完成。app容器节点(django)的配置django容器启动后,需要利用django框架,开发一个简单的web程序。为了访问数据库,需要在容器中安装python的redis支持包:安装完成后,验证支持包是否安装成功:如上面的输出,则表示现在可以使用pythob语言调用redis数据库了。接下来创建web程序。以app1为例,进入宿主机的volume目录对新建app进行编辑。
在容器的volume目录下/usr/src/app下,开始创建app:在容器中创建app后,切换到宿主机的volume目录~/projects/django/app1下:可以看到,在容器内创建的app文件在宿主机的volume目录下同样可见。然后修改helloword应用的视图文件views.py:修改后的views.py文件如下:注意,连接redis数据库时,使用–link参数创建db连接来代替具体的ip地址;同理,对于app2,使用想要的db连接即可。
接下来,修改redisweb项目的配置文件setiing.py,添加新建的helloworld应用:在setting.py文件中的installed_app 香港云主机s选项下添加helloworld:最后,修改redisweb项目的url模板文件urls.py,它将设置访问应用的url模式,并为url模式调用的视图函数之间的映射表:在url.py文件中,引入helloworld应用的hello视图,并为hello视图添加一个urlpatterns变量。修改后的urls.py文件如下:以上修改完成后,再次进入容器,在目录/usr/src/app/dockerweb/redisweb下生成项目:至此,所有app1容器的配置已经完成,app2容器的配置也是同样的过程。配置完成app1和app2的容器后,就完成了应用栈的app部分的全部配置。
在启动app容器的web服务器时,可以指定服务器的端口和ip地址,为了通过haproxy容器节点接受外网所有的公共ip地址访问,实现负载均衡,需要指定服务器的ip地址和端口。对于app1使用8001端口,而app2使用8002端口,同时,都使用0.0.0.0地址。以app1为例,启动服务器的过程如下:haproxy容器节点配置所有对应用栈的访问均通过haproxy负载均衡代理容器节点实现负载均衡。
首先,将haproxy的启动配置我呢间复制到容器中,在宿主机的volumes目录~/projects/haproxy/下:修改后的haproxy.cfg文件如下:随后,进入容器的volume目录/tmp下,将haproxy的启动配置文件复制到haproxy的工作目录:然后,利用配置文件启动haproxy代理:应用栈访问测试在浏览器中访问http://172.17.0.7:6301/helloworld,可以看到app1或app2的页面(本地主机访问应用栈):说明:172.17.0.7是haproxy容器的地址。本地测试通过后,尝试在其他主机上通过应用栈入口地址的ip地址和6301端口访问应用栈app,即http://192.168.1.104:6301/helloworld,如下图所示(外网其他主机访问应用栈):说明:192.168.1.104是宿主机的ip地址。“Docker怎么搭建简单的应用栈与容器Hello World访问”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: Javascript有哪些Math数学类

这篇文章主要介绍“Javascript有哪些Math数学类”,在日常操作中,相信很多人在Javascript有哪些Math数学类问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”J 香港云主机avascript有哪些Math数学类”…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/03 22:09
下一篇 07/03 22:10

相关推荐