Dockerは、「コンテナ型仮想化技術」を使って、 アプリケーションを 「どこでも・同じように」動かせるようにする プラットフォームである。
従来の仮想化 (例 VMware) では「ハードウェア全体を仮想化」していたが、 「コンテナ型仮想化」では「OSレベルで分離・軽量な仮想環境を作る。
そのため、Docker は以下のような利点を持つ。
Docker が動作しているコンピュータを「ホストOS」と呼び、 Docker の中で動作している仮想化された計算環境を「ゲストOS」と呼ぶ。
すなわち、Docker においては、「ゲストOS」とは 「Container」 のこと と考えると理解しやすい。
Docker の実行環境としては、Docker Engine と Docker Desktop がある。
Docker Engine を含みつつ、GUI で操作できるようにしたもの。
(操作)Image の一覧を表示する $ docker image ls
(操作) Container の一覧を表示する $ docker container ls -a
以下の Docker の操作コマンドには、操作対象 (image か container ) を 省略可能な場合があるが、混乱の元なので省略形は使わないことを推奨する。
$ docker run オプション イメージ名run は pull + create + start という一連の操作をひとつにまとめたものである。 runコマンドのオプションとして pull, create, start 各コマンドのオプションを指定できる。
pull
... Image を取得するcreate
... Container を生成するstart
... Container を開始する$ docker run -dit --name string -p host_port:container_port -v host_dir:container_dir イメージ名
$ docker image ls
$ docker pull イメージ名
$ docker pull イメージ名:タグ
$ docker pull イメージID
$ docker image rm イメージ名
$ docker image rm イメージID
$ docker container ls -a
$ docker container ls
$ 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$:コンテナ側のパス) |
$ docker start オプション コンテナ名
$ docker start オプション コンテナID[オプション]
-d | detached (backgroundで実行する) |
-i | interactive モード |
-t | コンテナのプロセスに対して tty を割り当てる。 |
$ docker stop コンテナ名
$ docker stop コンテナID
既にに作成済みの Container の起動方法を設定する。 $ docker update --restart always コンテナ名
Container を作成する(run, create)時に指定する。 $ docker run --restart always 他のオプション コンテナ名--restart オプションで指定できる値
値 | 説明 |
---|---|
no | 自動起動しない (default) |
always | ホスト再起動後も自動起動 |
unless-stopped | 手動停止しない限り自動起動 |
on-failure | 異常終了したときのみ自動起動 |
$ docker container ps -a
$ docker container ps
$ docker container rm コンテナ名
$ docker container rm コンテナID
$ docker exec -it コンテナ名 /bin/bash
$ docker run --name コンテナ名 -it イメージ名 /bin/bash
Ctr + P or Ctr + Q[attachする]
$ docker attach コンテナ名