当前位置:   article > 正文

docker学习笔记6---编写docker-compose.yml并运行实例(docker学习结束)_docker compose v2.21怎么写docker-composer.yml

docker compose v2.21怎么写docker-composer.yml

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/74204
推荐阅读
相关标签
  

闽ICP备14008679号