尝试使用Docker连接多个容器的实例编号为13
你好。我叫Mayumi。
我正在以系列形式撰写关于Docker的文章。
在之前的第11篇文章中,我介绍了如何使用”docker-compose”将多个容器连接起来。
在本文中,
我想通过使用”Docker”而不是docker-compose来连接多个容器,感受一下这样做有多么麻烦,我将把这个略带自虐的实验总结成一篇文章。
只是通过亲身尝试这个麻烦的过程,我能够深刻理解网络是如何构建起来的。
我希望能与大家分享这种繁琐的经历。
这次要做的应用程序
即使说是”我创作了”,但实际上代码是从GitHub借来的。
请从这里获取GitHub上的代码。
网络建设的概要如下所述。
这个应用的概述是什么?
请投票选择喜欢狗还是喜欢猫,将结果进行统计并存入数据库,然后再次显示。
那是一种东西。
使用git clone命令来复制存储库。
构建Dockerfile
在投票目录中构建Dockerfile。(使用-t voting-app选项,创建了一个名为voting-app的映像)
docker build -t voting-app .
那么,让我们从制作好的镜像中启动容器吧。由于这是一个Web应用程序,不要忘记进行端口映射以便进行运行。
docker run -p 5000:80 voting-app
接着,我尝试访问 localhost:5000。
成功显示了。
然而,当您在这里点击狗或猫的按钮进行投票时,会出现错误。
回到终端后,发现由于与redis连接失败导致了错误的产生。
因为我还没有启动redis容器,所以当然是当然的。
启动Redis容器
将redis容器装载
以脱机模式运行(添加-d选项)
并命名为redis(添加–name=”redis”选项)
启动。
docker run -d --name=="redis" redis
确认Redis已启动后,再次从之前的Dockerfile创建的镜像(命名为voting-app)中启动容器。
要将Redis和voting-app连接起来,需要添加–link redis:redis选项来执行。
docker run -p 5000:80 --link redis:redis voting-app
请尝试访问localhost:5000,并点击CATS或DOGS按钮,这次确实出现了勾号。
准备Postgres
由於與 Redis 的連接,接下來我們想要與 worker 進行連接。然而,在進行連接之前,我們需要先啟動 Postgres。
请您将以下内容进行中文简洁化:
GitHub的
例子-投票应用程序 > docker-compose.yml
提供了应使用的PostgreSQL版本,因此我们将执行该版本的PostgreSQL容器。
docker run -d --name="db" postgres:9.4
如果在以上代码中,容器启动但Postgre保持运行状态不变的话,请尝试使用以下代码。
docker run -d --name=db -e POSTGRES_PASSWORD=postgres postgres:9.4
我们要从worker目录中的Dockerfile构建镜像。
docker build -t worker-app .
如果您查看体系结构的概述,就会明白worker与Postgre和redis相连接。
用链接选项
工人将两台服务器连接起来并运行。
docker run --link redis:redis --link db:db worker-app
执行result目录下的Dockerfile
最后,我们将启动用于计算投票结果并显示结果的result-app的Dockerfile。
请运行 result目录中的Dockerfile。
docker build -t result-app .
在完成Image创建之后,使用该Image来运行容器。
docker run -p 5001:80 --link db:db result-app
让我们尝试访问 localhost:5001
如果你在Voting-app上投票给CATS,那么应该显示CATS的比例为100%。
总结
本次文章中,我借用了GitHub上的代码,重点讨论了应该连接哪个容器和哪个容器的问题。
不避免地,我选择使用DockerCLI而非docker-compose来尝试。
真是非常烦人啊。(笑)
下一次,我想尝试使用『docker-compose』来启动同一款应用程序。