Bitbucket Pipelines:「authorization denied by plugin pipelines」
ステップに services: - docker を付けると使える Docker デーモンは、Atlassian のビルド用マシンでは一部のオプションを断ります。共有の環境を守るためです。コマンドは次のエラーで止まり、たいてい後ろに断ったオプションが付きます。
Error response from daemon: authorization denied by plugin pipelines: --privileged=true is not allowed
止められるものは Atlassian の Bitbucket Pipelines で Docker コマンドを実行するに一覧があり、Runtime v3 ではこの制限が掛からないとも書かれています。
止められるもの
docker run(docker container run):--cap-add・--device・--ipc・--mount・--pid・--privileged・--security-opt・--userns・--uts。--volume(-v)も、リポジトリをクローンしたビルド用のディレクトリ($BITBUCKET_CLONE_DIR)の下でなければ止められます。docker updateの--devices、docker execの--privileged、docker buildの--security-opt。- BuildKit では、マルチアーキテクチャのビルド・
--platform・Buildx のプラグイン・Dockerfile のRUN --mount=type=sshとRUN --security=insecure。ビルドの中で SSH を使うときは、--ssh default=$BITBUCKET_SSH_KEY_FILEを使うよう書かれています。
Atlassian の記事 Using Docker commands protected by Pipelines in Runners(英語)は、この一覧がすべてではなく、ほかの Docker API の呼び出しも同じように断られることがあると補っています。Docker Compose も同じオプションをデーモンに送るので、privileged のサービスや、クローン先の外を指すボリュームがある compose ファイルも、ここで止まります。
ふつうの docker build で出るとき
スクリプトでは --privileged を頼んでいないのに出る場合があります。Atlassian の記事 Google deployment fails in Bitbucket Pipeline for Cloud(英語・2026年4月21日更新)が、そのわけを説明しています。
Pipelines は自分の Docker クライアントを /usr/bin に入れます。ところが Google Cloud SDK のイメージなど一部のビルド用イメージは、新しいクライアント(23 以降)を /usr/local/bin に持っていて、PATH ではそちらが先です。Docker 23 からは docker build が docker buildx build として動き、Buildx が --privileged を頼みます。記事の直し方は2つで、どちらかをスクリプトの最初に置きます。
export PATH=/usr/bin:$PATH # Pipelines が入れる Docker クライアントを使う
export DOCKER_BUILDKIT=0 # または、以前のビルダーで作る
DOCKER_BUILDKIT はワークスペースの変数にもできます。そうすれば、リポジトリごとにファイルを直さずに済みます。
Runtime v3 では制限が掛からない
Atlassian の Runtime v3 を有効にして使用するによると、Runtime v3 の docker run は --privileged を含めてどの引数も受け付け、Buildx も使えます。全部のステップか、1つのステップで有効にします。
options:
runtime:
cloud:
version: 3
pipelines:
default:
- step:
image: your-image-with-the-docker-cli
services:
- docker
script:
- docker run --privileged alpine:3 sh -c "echo ok"
変わる点が2つあります。Pipelines が Docker CLI を入れなくなるので、ビルド用イメージに含めるか、スクリプトで入れます。Docker のレイヤーのキャッシュ(caches: - docker)は廃止予定で、頼んだステップには警告が出てキャッシュは使われません。代わりに Buildx のキャッシュが勧められています。privileged のモードは必要なときだけ、信頼できるイメージで使うようにとも書かれています。
セルフホストのランナー
自分のランナーでも、既定の docker サービスはこれらのコマンドを断ります。ランナーの記事は、docker:dind のイメージで別の Docker サービスを定義し、ランナーで動くステップでそれを使う形を示しています。
definitions:
services:
docker-custom:
type: docker
image: docker:dind
pipelines:
default:
- step:
runs-on:
- self.hosted
- linux
services:
- docker-custom
script:
- docker run --privileged alpine:3 sh -c "echo ok"
クローン先の外のボリューム
Atlassian のマシンでも許してほしいという要望 BCLOUD-20986(2021年)は、2025年5月に関心が少ないとして閉じられました(投票5)。ファイルを $BITBUCKET_CLONE_DIR の下に写してそこからマウントするか、そのステップを Runtime v3 かランナーに移します。
IntelliJ IDEA で Bitbucket Pipelines を見る
Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud の全部のリポジトリのパイプラインを IDE のツールウィンドウに並べ、ステップ、失敗したステップと止まったコマンド、Bitbucket が書くそばから伸びるステップのログを見せます。一覧・ステップ・ログは無料。パイプラインの実行・やり直し・停止は Pro(月 US$1.50・30日の無料試用つき)。
Atlassian・Bitbucket・Bitbucket Pipelines は Atlassian の商標、Docker は Docker, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・Docker・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Container 'docker' exceeded memory limit.」 · 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」(デプロイ) · 「Cannot connect to the Docker daemon」 · 「Host key verification failed」(SSH) · 変数が空になる · IntelliJ IDEA の Bitbucket Pipelines 用プラグインの比較 · English