docker学习笔记6---编写docker-compose.yml并运行实例(docker学习结束)

编写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的基础知识都已经完成

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值