質問: Dcoker初心者です。 Dockerの構築解説の記事を見ると、docker-compose upしてからdocker-compose runでサービスを指定しているのをよく見かけます。そこで疑問に思ったのですが、upとrunでコンテナが二つ出来上がってしまわないでしょうか? すでにあるコンテナに対してはexecコマンドだと思っていました。 なぜrunコマンドを使うのか教えていただきたいです。
回答: `up` した後に `run` すると、 `up` で作ったコンテナとは別に `run` のコンテナが起動します 次の例は、`up` した後に `db` サービスを `run` したときの様子です: ``` $ docker-compose ps Name Command State Portstest-docker-compose_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp test-docker-compose_db_run_b95885f07f6b docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp test-docker-compose_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp ``` 記事によっては純粋に間違えていることもあるかもしれませんので、 この検証の結果を踏まえて解説の記事を読んでみると良いかもしれません コマンドの違いについては、次の回答でまとめました: Docker - docker-compose exec bashとrun|teratail