Lesstep
Bitbucket Cloud・Pipelines・2026年10月29日に確認

Bitbucket Pipelines:「Container 'docker' exceeded memory limit.」

docker のサービス(ステップの docker build・docker run・pipe を受け持つ Docker デーモン)が、自分の分のメモリを使い切りました。書かなければ 1024 MB です。ステップを大きくしても、それだけでは増えません。bitbucket-pipelines.yml に docker のサービスのメモリを書きます。

size: 2x で直らないわけ

このメッセージについての Atlassian の記事(Bitbucket Pipeline build error "Container 'docker' exceeded memory limit")によると、docker のサービスは、多く割り当てるまでステップの大きさにかかわらず 1024 MB のままです。ステップを大きくして増えた分は、スクリプトが動くビルドのコンテナに回り、Docker には回りません。

この 1024 MB で、ステップの中の Docker の仕事を全部まかないます。docker run で起こしたコンテナ全部と、docker build に要るメモリです(Run Docker commands in Bitbucket Pipelines)。

docker のサービスにメモリを足す

definitions:
  services:
    docker:
      memory: 3072

pipelines:
  default:
    - step:
        services:
          - docker
        script:
          - docker build -t my-image .

memory の単位はメガバイトです。docker のサービスには image は要りません(Pipelines が用意します)。

pipe のあるステップ

pipe は Docker のコンテナとして動くので、ステップに書いていなくても Pipelines が docker のサービスを足します。足されたサービスは 1024 MB のままです。書いた memory を効かせるには、そのステップに docker を自分で書きます:

- step:
    services:
      - docker
    script:
      - pipe: atlassian/git-secrets-scan:3.1.0

どこまで足せるか

docker のサービスに渡せるのは、ステップのメモリから、ビルドのコンテナの 1024 MB と、ほかのサービスの分を引いた残りです。ほかのサービスが無いとき、Atlassian の記事の数字:

ステップの大きさステップのメモリdocker の上限
1x4096 MB3072 MB
2x8192 MB7168 MB
4x16384 MB15360 MB
8x32768 MB31744 MB
16x65536 MB63488 MB

4x 以上は Standard と Premium のプランだけで、大きいほどその倍数だけビルド時間(build minutes)を使います(Step options)。

Docker に渡した分だけ、スクリプトの分が減ります。1x で memory: 3072 にすると、ビルドのコンテナに残るのは 1024 MB だけです。スクリプトもメモリを使うなら、今度は 「Container 'Build' exceeded memory limit.」で止まります。そのときは size: 2x にして、たとえば memory: 4096(スクリプトに 4096 MB 残る)にします。

ステップごとに違うメモリにする

docker の memory は、それを書いたステップ全部に効きます。1つのステップだけ多く要るなら、Atlassian の文書にあるとおり、type が docker の別のサービスを作ります:

definitions:
  services:
    docker:
      memory: 1024
    docker-large:
      type: docker
      memory: 7168

pipelines:
  default:
    - step:
        name: Unit tests
        services: [docker]
        script:
          - docker build -t my-tests -f Dockerfile.test .
    - step:
        name: Image
        size: 2x
        services: [docker-large]
        script:
          - docker build -t my-image .

コンテナを上限の中に収める

IntelliJ IDEA で Bitbucket Pipelines を見る

Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud の全部のリポジトリのパイプラインを IDE のツールウィンドウに並べ、ステップ、失敗したステップと止まったコマンド、Bitbucket が書くそばから伸びるステップのログを見せます。一覧・ステップ・ログは無料。パイプラインの実行・やり直し・停止は Pro(月 US$1.50・30日の無料試用つき)。

JetBrains Marketplace で入れる

Atlassian・Bitbucket・Bitbucket Pipelines は Atlassian の商標、Docker は Docker, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・Docker・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:push したのに Pipelines が動かない · 「Container 'Build' exceeded memory limit.」 · 「Exceeded build time limit of 120 minutes」 · キャッシュが効かない · 「unexpected system error」 · 「command not found」 · サブモジュールを取ってこない · 「We couldn't clone the repository」 · 「No online runner available」 · 「No space left on device」 · 「Step exceeded processing limits」 · 次のステップにアーティファクトが無い · 前は通ったビルドが今は落ちる · Build setup に時間がかかる · ビルド時間を使い切った · 「Permission denied to update branch」 · 「You have reached your pull rate limit」(Docker Hub) · 「There is an error in your bitbucket-pipelines.yml」 · 「This pipeline was paused」(デプロイ) · IntelliJ IDEA の Bitbucket Pipelines 用プラグインの比較 · English