2025/4/28 Updated by

Docker 入門

Docker の基礎概念と基本操作


[Up] Japanese English


Docker の基礎概念


Docker とは

Dockerは、「コンテナ型仮想化技術」を使って、 アプリケーションを 「どこでも・同じように」動かせるようにする プラットフォームである。

従来の仮想化 (例 VMware) では「ハードウェア全体を仮想化」していたが、 「コンテナ型仮想化」では「OSレベルで分離・軽量な仮想環境を作る。

そのため、Docker は以下のような利点を持つ。

Docker における 「ホストOS」 と 「ゲストOS」

Docker が動作しているコンピュータを「ホストOS」と呼び、 Docker の中で動作している仮想化された計算環境を「ゲストOS」と呼ぶ。

すなわち、Docker においては、「ゲストOS」とは 「Container」 のこと と考えると理解しやすい。


Docker Engine と Docker Desktop

Docker の実行環境としては、Docker Engine と Docker Desktop がある。

Docker Engine

Docker の中核となるコンポーネント。 「コンテナを生成・管理・削除する」ためのサーバプログラムと、それを操作するクライアント群で構成される。 CUI (= 非 GUI)で操作を行う。

Docker Desktop

Docker Engine を含みつつ、GUI で操作できるようにしたもの。


Docker の構成要素

Docker Image と Docker Container の違いについて理解すると、docker がわかる。

Docker Image

(操作)Image の一覧を表示する
  $ docker image ls

Docker Container

(操作) Container の一覧を表示する
  $ docker container ls -a


Docker の基本操作


以下の Docker の操作コマンドには、操作対象 (imagecontainer ) を 省略可能な場合があるが、混乱の元なので省略形は使わないことを推奨する。


Image を取得して Container を生成し、その Container を起動する操作: run

  $ docker run オプション イメージ名
run は pull + create + start という一連の操作をひとつにまとめたものである。 runコマンドのオプションとして pull, create, start 各コマンドのオプションを指定できる。 (使用例)
  $ docker run -dit --name string -p host_port:container_port -v host_dir:container_dir イメージ名

Image に対する操作

Image の一覧を表示する

  $ docker image ls

Imageを取得する

  $ docker pull イメージ名
  $ docker pull イメージ名:タグ
  $ docker pull イメージID

Image を削除する

  $ docker image rm イメージ名
  $ docker image rm イメージID

Container に対する操作

Container の一覧を表示する

$ docker container ls -a

動作中のContainer の一覧を表示する

  $ docker container ls

Container を作成する

  $ docker create  オプション  イメージ名  実行コマンド
  $ docker create  オプション  イメージID  実行コマンド
[オプション]
--name $~string$ 名前を $string$ と指定する
--publish, -p $~int_1$:$int_2$ port mapping を指定する ($int_1$ はホストのポート番号, $int_2$ はコンテナのポート番号)
--volume, -v $~string_1$:$string_2$ ボリュームをマウントする ($string_1$: ホスト側のパス, $string_2$:コンテナ側のパス)

Container を開始する

  $ docker  start オプション  コンテナ名
  $ docker  start オプション  コンテナID
[オプション]
-d detached (backgroundで実行する)
-i interactive モード
-t コンテナのプロセスに対して tty を割り当てる。

Container を停止する

  $ docker stop コンテナ名
  $ docker stop コンテナID

Container を自動起動するように設定する

既にに作成済みの Container の起動方法を設定する。
  $ docker update  --restart  always  コンテナ名
Container を作成する(run, create)時に指定する。
  $ docker run  --restart  always  他のオプション  コンテナ名
--restart オプションで指定できる値
説明
no 自動起動しない (default)
alwaysホスト再起動後も自動起動
unless-stopped手動停止しない限り自動起動
on-failure異常終了したときのみ自動起動

Container の状態を確認する

  $ docker container ps  -a

動作中の Container の状態を確認する

  $ docker container ps

Container を破棄する

  $ docker container rm コンテナ名
  $ docker container rm コンテナID

動作中のコンテナで別シェルを起動する

  $ docker exec -it  コンテナ名  /bin/bash

停止中のコンテナでシェルを起動する

  $ docker run --name コンテナ名 -it イメージ名 /bin/bash

コンテナの中と外を行き来する

[detach する]
    Ctr + P
or 
    Ctr + Q
[attachする]
  $ docker attach  コンテナ名