0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker start したのに設定が反映されない理由を初心者向けに整理する

0
Last updated at Posted at 2026-02-02

はじめに

Docker を使ってシステムを構築する機会があったのですが、
その際に docker start を実行したにもかかわらず、設定変更が反映されない という事象に遭遇しました。

  • docker-compose.yml は「いつ」「どこで」参照されているのか分からない
  • 別ディレクトリにある docker-compose.yml からコンテナを起動できるのか?

といった点が分からず、
「なんとなく分かるけど、腑に落ちない」状態がしばらく続いていました。

そこで本記事では、
実際の作業を通して理解した内容を、Docker 初心者目線で整理してみます。

同じようなところで詰まっている方の参考になれば幸いです。
※ Docker を使っている方には当たり前の内容かもしれませんが、備忘録として残しておきます。

前提の構成

AWSのEC2 上で以下のような構成を使っていました。

  • リバースプロキシ用コンテナ
  • バックエンドコンテナ
  • フロントエンドコンテナ
  • docker-compose で管理

ディレクトリはこんなイメージです。

/home/app-a
  └ docker-compose.yml

/home/app-b
  └ docker-compose.yml

起きたこと

まず /home/app-a でコンテナを起動しました。

cd /home/app-a
docker compose up -d

その後、設定を少し変えて、

docker restart app-nginx

を実行したのですが、

  • 設定変更が反映されない
  • 「今いるディレクトリの docker-compose.yml が使われていない?」

状態でした。

docker start / restart は何を見ているのか?

結論からですが、

👉 docker start / docker restart は
docker-compose.yml を一切見ていません

これらのコマンドは、

  • すでに存在しているコンテナ
  • Docker Engine に保存されている「コンテナ定義」

を使って、ただ起動(再起動)するだけです。

つまり、

docker restart app-nginx

をどのディレクトリで実行しても、

  • docker-compose.yml
  • Dockerfile

は参照されません。

docker-compose.yml が参照されるタイミング

では、docker-compose.yml はいつ使われるのでしょうか。

👉 docker compose up を実行したときだけです。

cd /home/app-a
docker compose up -d

このときに初めて:

  • 今いるディレクトリの docker-compose.yml
  • (あれば)同じ場所の .env
    が読み込まれます。

docker start と docker compose up の違い

混乱したポイントなので、表でまとめます。

コマンド 新規作成 設定ファイル参照
docker start
docker restart
docker run ❌(引数のみ)
docker compose up ✅(docker-compose.yml)

👉 設定変更を反映したい場合は docker restart では不十分
👉 docker compose up が必要

実際に動いているコンテナを確認してみる

docker ps

すると、以下のように表示されました。

  • nginx コンテナ(80番公開)
  • frontend コンテナ(3000番公開)
  • backend コンテナ(ポート非公開)

ここで重要なのは、

「このコンテナたちは、
すでに Docker に登録された存在」

という点です。
docker start は この登録情報を使って起動しているだけです。

別ディレクトリの docker-compose.yml から起動できるのか?

結論:
👉 可能です

例えば、すでに /home/app-a のコンテナが起動していても、

cd /home/app-b
docker compose up -d

を実行すれば、
別の docker-compose.yml を元に新しいコンテナが作成されます。

注意点

① container_name の衝突

container_name: app-nginx

このように container_name を固定している場合、
別ディレクトリでも同じ名前は使えません。

Conflict. The container name is already in use

② ポートの衝突

ports:
  - "80:80"

これは 1台のサーバで1つだけしか使えません。
別compose でも起動したい場合は、

ports:
  - "8080:80"

など、ホスト側ポートをずらす必要があります。

③ volumes / networks の名前固定

volumes:
  app_node_modules:
networks:
  app_network:

名前が固定されていると、別 composeでも同じボリューム・ネットワークを共有します。
意図していない場合は注意が必要です。

まとめ

  • docker start / restart は「既存コンテナ」を起動するだけ
  • docker-compose.yml は docker compose up のときだけ使われる
  • ディレクトリを切り替えて compose up すれば別構成を起動できる
  • container_name / ports / volumes は衝突しやすい

Docker は便利ですが、
「どの情報をどのタイミングで使っているか」 を理解しないと混乱しやすいと感じました。

自分と同じように「docker start って何見てるの?」と疑問に思った方の助けになれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?