Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

【Docker入門】コマンド「docker run -dit」の「-d」の意味と、コンテナのアタッチとデタッチとは?

【Docker入門】コマンド「docker run -dit」の「-d」の意味と、コンテナのアタッチとデタッチとは?

今回はDockerのコマンド「docker run -dit」のオプション「-d」が意味する、コンテナのアタッチとデタッチというわかりにくい概念について大雑把なイメージを解説します。あくまで大雑把な説明ですので、正確性は公式ドキュメントや他の方の解説記事をご覧ください。

Dockerコマンド「docker run -dit」の「-d」とは?

よくDockerのコンテナを作るとき、次のようなコマンドが使われます。

docker run -dit --name コンテナ名 -p (以下略)

これにはオプションの1つとして「-dit」というものが設定されていますが、この「-dit」というものは、次の3つのオプションを一括して指定する場合の記述方法です。

  • -d
  • -i
  • -t

このうち「-d」は、このrunコマンドによって作成され実行される「コンテナをデタッチという状態にする」という意味を持っています。

ではコンテナのデタッチとは一体どういうことなのでしょうか。その逆の概念である「アタッチ」とも含めて以下解説します。

Windowsのタスクトレイと、コンテナのアタッチとデタッチとの関係性

さてこのDockerコンテナのわかりにくい概念アタッチとデタッチですが、これらの概念をものすごく乱暴に解説すると、Windowsのタスクバーのタスクトレイに起動中のアプリをいれるか、いれないかというのと同じような意味です。

ただもう少し正確にいえば、デタッチはコンテナをバックグラウンドで動かすという意味です。しかし、バックグラウンドで動かすというのが初心者にはわかりにくいと思うので今回はWindowsのタスクバーにあるタスクトレイと関連させて解説します。

Windowsのタスクトレイに入っているアプリは普通に動いているわけですが、通常はタスクトレイの中の各アプリのアイコンをクリック(左クリックなり右クリックなり)して始めて操作が可能となります。

一方でタスクトレイに入っていないアプリで起動中しているアプリは、キーボードショートカット「Alt+Tab」で表示の切り替えが可能です。

ようするにずっと動き続けてほしいが、普段は操作する必要がないアプリがタスクトレイに入っていて、普段の作業でよく使うアプリはタスクトレイに入っていないわけです。

Dockerコンテナのアタッチとデタッチという概念は、まさにこうしたWindowsのタスクバーのタスクトレイの機能をイメージしてもらうと理解しやすいと思います。

すなわち、コンテナのデタッチとは、

  • 普段は操作したり・いじったりする必要のないコンテナ
  • 操作したり、いじったりしてほしくないコンテナ

をキーボードなどから直接操作しにくくする機能です。

一方でアタッチとはその逆で、何らかのコンテナをキーボードなどから直接操作できるようにしておきたい状態にする機能です。

このようなDockerとWindowsの機能との対応関係をまとめると下表のようになります。

Dockerの場合Windowsの場合
コンテナのデタッチタスクトレイに入る(動いてはいるが、基本的に普段は操作する必要がないアプリなので直接操作しにくいようにする)
コンテナのアタッチタスクトレイに格納しないで、キーボードやマウスによって直接操作できるようにする

今回の説明とこの表はかなり乱暴なもので、あくまで「こんな感じのイメージ」という程度の不正確なものですが、Docker初心者のうちは最初はこのようなイメージだけでも頭にあれば、他の方が書かれている詳しく正しい解説記事やDockerの書籍などを読んだ場合にわかりやすくなると思います。

【割引セールも!】Udemyでお得なプログラミング学習講座を探す
愛を分かち合いましょう