目次
はじめに
QNAPのContainerStationでDocker Composeを使っていると、以下のような警告が表示されることがあります。
WARN the attribute `version` is obsolete, it will be ignored,
please remove it to avoid potential confusion
この警告はdocker-compose.ymlの先頭に書かれているversion:という記述が原因です。
この記事では警告の原因と、SSHを使った修正手順を解説します。
この記事でわかること
version:属性の警告が出る原因- SSHで
version:を削除する方法 - 複数のdocker-compose.ymlをまとめて確認する方法
- 修正してはいけないファイルの見分け方
環境
- QNAP NAS(ContainerStation インストール済み)
- SSH接続ソフト:TeraTerm
なぜ警告が出るのか
以前のDocker Composeではdocker-compose.ymlの先頭に以下のようにバージョンを記述するのが一般的でした。
version: '3.8'
services:
...
しかしDocker Compose V2以降、このversion:フィールドは廃止(obsolete) となりました。現在は書いても無視されるだけですが、警告として表示されます。
解決策はシンプルで、version:の行を削除するだけです。
Step 1:QNAPのSSHを有効にする
SSHの有効化手順はこちら [QNAPのCloudflaredをSSHでアップデートする方法]
コントロールパネル → ネットワークとファイルサービス → Telnet/SSH → 「SSH接続を許可する」にチェック → 適用
Step 2:TeraTermでSSH接続する
TeraTermを起動してQNAPのIPアドレスに接続します。
Step 3:警告が出ているdocker-compose.ymlを特定する
まず警告が出ているファイルを確認します。
grep -r "^version:" /share/CACHEDEV4_DATA/docker/ 2>/dev/null | grep "docker-compose.yml"
実行結果の例:
/share/CACHEDEV4_DATA/docker/your_blog/docker-compose.yml:version: '3.8'
/share/CACHEDEV4_DATA/docker/your_blog2/docker-compose.yml:version: '3.8'
2>/dev/nullについて データベースファイルなどアクセス権限のないファイルへのエラーメッセージを非表示にしています。grep "docker-compose.yml"で対象ファイルのみに絞り込んでいます。
Step 4:修正前に必ず確認する
version:を削除してdocker compose up -d --force-recreateを実行する前に、そのファイルが実際に使われているかを確認します。
docker ps
実行中のコンテナ一覧と、修正対象のdocker-compose.ymlに書かれているコンテナ名を照合してください。
重要:使われていないファイルは触らない docker-compose.ymlが存在していても、実際のコンテナが別のファイルで管理されている場合があります。 そのようなファイルを誤って
docker compose upすると、コンテナ構成が壊れる可能性があります。 必ずdocker psで現在動いているコンテナを確認してから作業してください。
Step 5:version:を削除する
修正対象のディレクトリに移動してversion:行を削除します。

cd /share/CACHEDEV4_DATA/docker/2tsuji
sed -i '/^version:/d' docker-compose.yml
削除できたか確認します:
cat docker-compose.yml
先頭がservices:から始まっていれば成功です。

Step 6:コンテナを再作成して警告が消えたか確認する
docker compose up -d --force-recreate
修正前(警告あり):
WARN the attribute `version` is obsolete, it will be ignored,
please remove it to avoid potential confusion
[+] Running 3/3
✔ Container cloudflared_your_blog Started
✔ Container wordpress_your_blog Started
✔ Container db_your_blog Started
修正後(警告なし):
[+] Running 3/3
✔ Container cloudflared_your_blog Started
✔ Container wordpress_your_blog Started
✔ Container db_your_blog Started

WARNの行が消えていれば修正完了です。
Step 7:警告が完全に消えたか確認する
docker compose config 2>&1 | grep -i warn
