docker学习笔记6---编写docker-compose.yml并运行实例(docker学习结束)
编写docker-compose.yml并运行实例1.编写docker-compose.yml一个docker-compose.yml文件是一个YAML文件,它定义了如何Docker容器在生产中应表现。将此文件保存为docker-compose.yml您想要的任何位置。确保将要运行的镜像已经推送送到注册表,并通过替换镜像详细信息进行更新。version: "3"servi...
编写docker-compose.yml并运行实例
1.编写docker-compose.yml
一个docker-compose.yml文件是一个YAML文件,它定义了如何Docker容器在生产中应表现。
将此文件保存为docker-compose.yml您想要的任何位置。确保将要运行的镜像已经推送送到注册表,并通过替换镜像详细信息进行更新。
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: username/repo:tag
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
networks:
webnet:
该docker-compose.yml文件告诉Docker执行以下操作:
- 从远程拉取镜像。
- 将该映像的5个实例作为一个被调用的服务运行web,限制每个实例使用,最多10%的CPU(跨所有内核)和50MB的RAM。
- 如果一个失败,立即重启容器。
- 将主机上的端口4000映射到web端口80。
- 指示web容器通过称为负载平衡的网络共享端口80 webnet。(在内部,容器本身web在短暂的端口发布到 80端口。)
- webnet使用默认设置(负载平衡的覆盖网络)定义网络。
2 运行新的负载均衡应用
在我们docker stack deploy首先运行命令之前:
docker swarm init
注意:如果您没有运行docker swarm init则会收到“此节点不是群集管理器”的错误。
现在让我们来运行吧。您需要为您的应用程序命名。在这里,它被命名为 getstartedlab:
docker stack deploy -c docker-compose.yml getstartedlab
单个服务堆栈在一台主机上运行已部署映像的5个容器实例,获取一项服务的服务ID:
docker service ls
查找服务的输出web,并附上应用名称。名称为getstartedlab_web。还列出了服务ID,以及副本数,映像名称和公开端口。
在服务中运行的单个容器称为任务。任务被赋予以数字递增的唯一ID,最多为replicas您定义 的数量docker-compose.yml。列出服务任务:
docker service ps getstartedlab_web
如果只列出系统上的所有容器,则任务也会显示,但不会被服务过滤:
docker container ls -q
可以使用curl -4 http://localhost:4000连续多次运行,或者在浏览器中转到该URL并点击刷新几次。
无论哪种方式,容器ID都会发生变化,从而证明负载均衡; 对于每个请求,以循环方式选择5个任务中的一个来响应。容器ID与上一个命令(docker container ls -q)的输出匹配。
注意:根据您环境的网络配置,容器最多可能需要30秒才能响应HTTP请求,这是由于容器响应redis的时间设置,在等待连接超时
到此,docker的基础知识都已经完成
更多推荐
所有评论(0)