Dockerとコンテナ技術 その3:Dockerとdockerコマンドでコンテナを作成してみた

コンテナの基本的な知識についてまとめてきましたが、今回からいよいよDockerに触れていきます。

Dockerとは

改めてDockerについて簡単に説明します。
Dockerとは、コンテナ仮想化技術のディファクトスタンダードとなっているコンテナ管理ツールです。
もはやコンテナ=Dockerといっても過言ではないくらいですね。
DockerはCLIによるコマンド操作やDocker desktopと言うGUIを用いた操作によってコンテナを扱うことができます。
desktopは直感的に分かりやすい操作が可能ですが、詳細な設定などはできないためコマンドでの操作も必要となってきます。
また、DockerにはDocker Hubと言う公式のレジストリがあり、多くのコンテナイメージが既に利用可能な状態になっているため、コンテナの利用を簡単に始めることができます。

Dockerのインストール

では実際にDockerをインストールしていきましょう。
Docker desktopをインストールすればCLIも利用できるようになるため、そちらをインストールしていきます。
以下のリンク先のサイトからダウンロードしてインストールを行いましょう。

Macの場合はこちら

windowsの場合はこちら

詳細な手順は割愛します。何か詰まったら調べてみてください。

dockerコマンド

dockerはdocker desktop上でのGUIによる操作も可能ですが、細かい設定や操作などはできないため基本的のCLIを利用したコマンド操作を行います。
dockerのコマンド操作にはdockerコマンドを利用します。

dockerコマンドの基本構成

dockerコマンドは以下のような基本構成となっています。

docker 対象 操作

dockerの後に操作する対象を指定し、その後に実行する操作を指定します。
この基本構成に、オプションを指定して詳細な設定などを追加させていきます。
例として、コンテナの作成・実行を行うコマンドは以下のようになります。

docker container run

containerコマンドでコンテナに対する操作であることを指定し、runコマンドでコンテナの作成・実行を命令しています。

dockerコマンドのオプション指定

dockerコマンドは、その他の多くのコマンドと同様に--〇〇というようなハイフンをつけた特定のオプションを指定することができます。
例として、先ほどのdocker container runコマンドにオプションをつけてみましょう。
--nameオプションでコンテナの名前を、-pオプションでポート番号の指定を行います。

docker container run --name container-name -p 8080:80 https

このように、dockerコマンドでは対象と操作を指定し、オプションによって詳細設定などを記述してコンテナに関する様々な操作を行なっていきます。

dockerコマンドの対象と操作

dockerコマンドの操作対象に指定できるものと、その操作対象に対して行うことができる主な操作を簡単にまとめていきます。
なお、下記のもの以外にも多くの操作コマンドがあるので、ぜひ調べてみてください。

container

コンテナに対する操作を実行します。

コマンド操作内容
runコンテナの作成・実行を行う
start停止しているコンテナを開始する
stop起動しているコンテナを停止する
rmコンテナを削除する
主なdocker containerコマンドの操作

compose

複数のコンテナに対する操作を実行します。

コマンド操作内容
upサービスを作成して開始する
runサービスの一時的な実行を行う
start停止しているサービスを開始する
stop起動しているサービスを停止する
downサービスを停止し、関連するリソースを削除する
主なdocker composeコマンドの操作

image

コンテナイメージに対する操作を実行します。

コマンド操作内容
buildDockerfileからイメージをビルドする
lsローカルに保存されているイメージのリストを表示する
pullリモートレジストリのイメージを取得する
pushイメージをリモートレジストリにアップする
rmイメージを削除する
主なdocker imageコマンドの操作

network

ネットワークに関する操作を実行します。
Dockerではコンテナ毎に異なるネットワークを作成することや、コンテナ間の通信設定などを行うことができます。
それらの操作をこのコマンドで行います。

コマンド操作内容
createネットワークを作成する
connectコンテナをネットワークに接続する
disconnectコンテナをネットワークから切断する
lsネットワークのリストを取得する
rmネットワークを削除する
主なdocker networkコマンドの操作

volume

コンテナ技術ではコンテナのライフサイクルとは独立して、永続的なデータやコンテナ間のデータ共有を行うデータボリュームという機能が備わっています。
docker volumeコマンドではデータボリュームに対する操作を実行します。

コマンド操作内容
createデータボリュームを作成する
lsデータボリュームの一覧を取得する
rmデータボリュームを削除する
主なdocker volumeコマンドの操作

Apacheのコンテナの作成・実行・停止・削除をしてみる

では、実際にコマンドを利用してコンテナを作成・削除・削除してみます。
今回はdocker hubにあるApacheのコンテナをプルして作成していきます。

コンテナの作成・実行

以下のコマンドを実行してみましょう。

docker container run --name apache01 -p 8080:80 -d httpd

--name apache01でコンテナの名前を指定、-p 8080:80でホストとコンテナ間もポートを8080にマッピング、-dでデタッチモード(コンテナをバックグラウンドで実行する)の指定をしています。
最後のhttpdはコンテナイメージの名前を指定しています。
コマンド実行後は以下のように表示されます。

docker container runコマンドではコンテナイメージがローカルに存在しない場合、自動でレジストリからプルしてくれます。
エラーが表示されていなければ起動できています。
Docker desktopを見てみましょう。

apache01という名前のコンテナが作成され、起動されているのが分かります。
試しにブラウザでhttp://localhost:8080/にアクセスしてみましょう。

Apacheのデフォルトページである画像のような画面が表示されれば成功しています。

コンテナの停止

次にコンテナの停止をしてみましょう。
先ほどコンテナの起動を行ったものとは別のウィンドウを開き以下のコマンドを実行します。

docker container stop apache01

実行すると以下のような表示がされます。

Docker desktopとブラウザ上でのアクセスを確認してみましょう。

コンテナが停止され、ブラウザからアクセスできなくなっていますね。

コンテナの削除

最後に作成したコンテナを削除してみましょう。
以下のコマンドを実行します。

docker container rm apache01

以下のように表示されれば成功です。

Docker desktopを確認してみましょう。

コンテナが削除されていますね。

まとめ

  • Dockerを使ったコンテナの操作はDocker desktopによるGUI操作とCLIによるコマンド操作の2つの方法がある
  • 詳細な設定を行うことができるため基本的にコマンド操作を使う方が多い
  • コマンド操作はdockerコマンドで行う。
  • dockerコマンドの基本構文はdocker 対象 操作 [その他オプション]

dockerコマンドで簡単にコンテナの作成から実行・停止・削除までの操作を行いました。
とても簡単に仮想環境を作成できることが実感できたのではないでしょうか。
次回以降はより実践的にコンテナを扱う方法をまとめていきたいと思います。
ここまで読んでいただきありがとうございました。
それでは、また。