2017-02-20 4 views
13

バージョン3で指定されたサービスに対してCPU &メモリを指定できません。ドッカーでメモリとCPUの制限を指定する方法バージョン3を作成する

バージョン2では、サービスの下で "mem_limit" & "cpu_shares"パラメータで正常に動作します。しかし、バージョン3を使用している間は、展開セクションの下に置くことは失敗します。私がswarmモードを使用していない限り、それは価値がないようです。

誰かが助けることができますか?

version: "3" 
services: 
    node: 
    build: 
    context: . 
     dockerfile: ./docker-build/Dockerfile.node 
    restart: always 
    environment: 
     - VIRTUAL_HOST=localhost 
    volumes: 
     - logs:/app/out/ 
    expose: 
     - 8083 
    command: ["npm","start"] 
    cap_drop: 
     - NET_ADMIN 
     - SYS_ADMIN 

答えて

6
deploy: 
    resources: 
    limits: 
     cpus: '0.001' 
     memory: 50M 
    reservations: 
     cpus: '0.0001' 
     memory: 20M 

の詳細:あなたはhttps://docs.docker.com/compose/compose-file/#/resources

特定の場合:

version: "3" 
services: 
    node: 
    image: USER/You-Pre-Build-Image 
    environment: 
     - VIRTUAL_HOST=localhost 
    volumes: 
     - logs:/app/out/ 
    command: ["npm","start"] 
    cap_drop: 
     - NET_ADMIN 
     - SYS_ADMIN 
    deploy: 
     resources: 
     limits: 
      cpus: '0.001' 
      memory: 50M 
     reservations: 
      cpus: '0.0001' 
      memory: 20M 

volumes: 
    - logs 

networks: 
    default: 
    driver: overlay 

注:

  • 必要はない公開は、上のデフォルトごとに公開されますあなたのスタックネットワーク。
  • 画像はあらかじめ作成されている必要があります。 v3内のBuilは不可能
  • "Restart"も解読されます。 ネットワークにおける:Uはまた、注意してください
  • あなたは(すべてではない場合)、最も改善v3のスタンドアロン一つのノード「群れ」を、使用群れ

のためのものであることが可能で、失敗アクションで展開の下で、再起動を使用することができますスウォームモードは橋渡ししない。内部でのみ接続したい場合は、ネットワークに接続する必要があります。あなたは1)他の構成ファイル内に外部ネットワークを指定するか、 - attachableパラメータでネットワークを作成する必要があります(docker network create -d overlay My-Network-attachachable) それ以外の場合は、

ports: 
    - 80:80 
+1

1.バージョン3を使用してイメージを構築できます。
2. v3のアプローチはv2とはまったく違っていて、アップグレードのようなものではないようです。
3.展開は、スウォームモードでのみ機能しているようです。私は警告を受け取っています -
"警告:いくつかのサービス(ノード)は無視される 'deploy'キーを使用しますComposeは配備設定をサポートしていません - ' docker stack deploy'を使用してswarmに展開してください。 " – vivekyad4v

+2

@ viveky4d4v Compose形式のv3文書では、Swarmを使用していない場合、 'deploy'は無視されます。 Swarmを使用していない限り、v3形式を使用する理由はまったくありません。 –

+0

@DanLowe私たちは、v3でのみサポートされているコンポジション自体にhealthcheckを提供したかったのです。しかし、私はそれなしで生き残ることができると思う。今はv3に移行するのは意味がないと私は同意します。 – vivekyad4v

関連する問題