Docker & Kubernetes 入門#3
ターミナルの起動
Mac の「ターミナル」を開きます。ターミナルは「Launchpad」→「その他」にあります。よく使用するので、Dock に追加しておきましょう。
Docker のコマンド投入
「ターミナル」から以下のコマンドを投入してDocker のバージョンを確認してみましょう。
$ docker --version
Docker version 19.03.2, build 6a30dfc
Docker上で動作しているプロセスを確認してみます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
当たり前ですが、まだ何も動作させていないので何も表示されません。
nginx のイメージを利用して Docker を起動する
ここで、アプリケーションを起動してみたいと思います。どんなアプリケーションでも良いですが、作成したいアプリケーションによって、利用する大元のイメージが異なってきます。イメージについては後述します。ここでは iso ファイルのようなものだと考えてください。
以下のコマンドを投入して nginx を起動してみましょう。
$ docker run --name mynginx -p 8080:80 --rm nginx:1.17
Unable to find image 'nginx:1.17' locally
1.17: Pulling from library/nginx
1ab2bdfe9778: Pull complete
a17e64cfe253: Pull complete
e1288088c7a8: Pull complete
Digest: sha256:53ddb41e46de3d63376579acf46f9a41a8d7de33645db47a486de9769201fec9
Status: Downloaded newer image for nginx:1.17
これで nginx が起動しました。
ブラウザで http://localhost:8080 にアクセスしてみましょう。
ターミナルに以下のようにアクセスログが表示されたことが確認できます。
172.17.0.1 - - [06/Sep/2019:00:13:25 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" "-"
ターミナルがアクティブな状態で「command + n」キーを押下してターミナルをもう一つ起動し、以下のコマンドを確認して、docker プロセスの状態を確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1de87a950bac nginx:1.17 "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp mynginx
「control + C」を押下して、nginx を終了します。
Docker の利点
nginx を起動してみて感じると思いますが、開発者からすると非常に簡単にテスト環境を用意することができます。nginx をインストールする OS を用意して、nginx をインストールして初期設定して・・・という作業が不要になります。
例えば、nginx で静的な HTML を載せて動作させるアプリケーションを考えている場合は、すでに構築済みの nginx のイメージを利用することができます。https://hub.docker.com/_/nginx に nginx が用意されています。
同様に、node.js で動作するサーバーサイド JavaScript アプリケーションを記述したい場合は https://hub.docker.com/_/node にそのイメージが用意されています。
CentOS のイメージなんかも置かれていてその上に nginx をインストールしてということも可能です。ただ車輪の再発明感が拭えないので再利用することをオススメします。
docker run コマンドの説明
Docker にはいくつかのコマンドが用意されています。Docker プロセスを起動するのが docker run になります。以降、Docker プロセスのことを Docker コンテナと呼びます。
- -d : 起動する Docker コンテナをバックグラウンドで起動します。
- — name : Docker コンテナに名前を付与します。今回の例では mynginx という名称をつけました。
- -p: コンテナのポートをホスト側に公開します。80 番ポートは apache などのサーバーでも利用されポートのバッティングを回避するため、今回の例では コンテナの 80 番ポートをホストの 8080 として公開しました。
- — rm : docker コンテナを終了時に削除します。
- nginx:1.17 : nginx のバージョン 1.17 を意味します。Mac 上に nginx 1.17 のイメージが存在していればそれを使いますが、今回は初回起動なので、ローカルにイメージが存在せず、Docker Hub からダウンロードされています。
次回
次回は Docker イメージについて詳細に説明します。