docker 坞站-组合:如何在版本3中执行版本2 "mem_limit"?

csbfibhn  于 2023-03-01  发布在  Docker
关注(0)|答案(2)|浏览(121)

最近,我尝试将2docker-composeyaml版本的文件升级到3版本,具体来说,我是从2.1升级到3.4,使用docker-compose版本1.18.0和docker版本18.06.01。
由于存在版本2选项,第一次尝试导致docker-compose中止:mem_limit。阅读这些Version 3 docs,它清楚地表明mem_limit已被删除,并查看“升级”以指导使用远离此选项。这些说明告诉您使用deploy部分与resources。对docker-compose.yml文件进行这些更改,系统正常启动。
不幸的是,我错过了免责声明,其中声明deploydocker-compose忽略!我的问题:是否有一种方法可以在使用合成文件引用3和docker-compose的同时仍然强制执行容器内存限制?

xqk2d5yq

xqk2d5yq1#

不,没有。
在版本2.x和3.x之间...删除了多个选项
......一个月一次,一个月一次:这些已被deploy下的resources键所取代。deploy配置仅在使用Docker堆栈deploy时生效,并且被docker-compose忽略。
请参阅合成:从2升级到3
而且你也不需要升级,如果你不使用swarm,你甚至没有任何理由升级。
很遗憾在官方的码头文件中,有这样的记载
第3版(最新和推荐版本)
事实并非如此,如果你使用docker-compose而不使用swarm,那么几乎没有任何理由去切换或在新项目v3上使用。在官方资源库中,你可以看到这样的评论[2][3]。同样在兼容性矩阵中,你可以看到v2仍然在升级,即使v3已经过时了很长一段时间。只有v1被标记为deprecated。

juzqafwq

juzqafwq2#

以下是具有内存限制的Docker合成文件版本3.8的示例:

version: '3.8'

services:
  web:
    image: nginx:latest
    deploy:
      replicas: 3
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
      resources:
        limits:
          memory: 256M
    ports:
      - "80:80"
    volumes:
      - type: volume
        source: myapp-data
        target: /var/www/html
    networks:
      - myapp-net
    environment:
      - NGINX_HOST=example.com
      - NGINX_PORT=80

  db:
    image: mysql:latest
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      resources:
        limits:
          memory: 512M
    volumes:
      - type: volume
        source: myapp-db
        target: /var/lib/mysql
    networks:
      - myapp-net
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=myapp

volumes:
  myapp-data:
  myapp-db:

networks:
  myapp-net:

相关问题