来るべきRailsチュートリアルへの着手に向けて、はじめてDocker for Windowsなるものを使ってみました。その結果まとめです。
Docker for Windowsのインストール
私の場合は、Chocolatey経由でDocker for Windowsをインストールしました。Chocolateyを使ったアプリケーションのインストールを行う場合、Powershellに管理者権限が必要となります。
$ choco install docker-desktop
Docker for Windowsがインストールされているか確認
Windows Powershellで以下のコマンドを実行します。管理者権限は必要ありません。
$ docker -v
Docker for Windowsが正しくインストールされていれば、実行結果は以下のようになります。
Docker version 18.09.2, build 6247962
バージョンが表示されていますね。
Dockerイメージ
Dockerイメージの入手 - nginx latest
$ docker pull nginx
実行結果は以下の通りになりました。
Using default tag: latest
latest: Pulling from library/nginx
fc7181108d40: Pull complete
d2e987ca2267: Pull complete
0b760b431b11: Pull complete
Digest: sha256:96fb261b66270b900ea5a2c17a26abbfabe95506e73c3a3c65869a6dbe83223a
Status: Downloaded newer image for nginx:latest
nginx latestのDockerイメージが正常に入手できたようです。
Dockerイメージの一覧表示
$ docker image ls
docker image ls
コマンドにより、現在Docker上に追加済みのDockerイメージを一覧表示することができます。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f68d6e55e065 6 days ago 109MB
nginx latestのイメージがDocker上にある状態です。
Dockerイメージの削除
$ docker image rm
docker image rm
コマンドにより、現在Docker上に追加済みのDockerイメージを削除することができます。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f68d6e55e065 6 days ago 109MB
$ docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:96fb261b66270b900ea5a2c17a26abbfabe95506e73c3a3c65869a6dbe83223a
Deleted: sha256:f68d6e55e06520f152403e6d96d0de5c9790a89b4cfc99f4626f68146fa1dbdc
Deleted: sha256:1b0c768769e2bb66e74a205317ba531473781a78b77feef8ea6fd7be7f4044e1
Deleted: sha256:34138fb60020a180e512485fb96fd42e286fb0d86cf1fa2506b11ff6b945b03f
Deleted: sha256:cf5b3c6798f77b1f78bf4e297b27cfa5b6caa982f04caeb5de7d13c255fd7a1e
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
現在実行中のDocker上にDockerイメージはなくなりました。
Dockerコンテナ
Dockerコンテナの作成
$ docker run -d -p 80:80 --name webserver nginx
-
-d
コンテナをデタッチド・モード(バックグラウンド実行)で生成する -
-p {ホスト側TCPポート}:{コンテナ側TCPポート}
ポート番号の指定- 今回は、ホスト側・コンテナ側ともTCP80番ポートを使用
-
--name {コンテナ名}
生成するコンテナ名の指定 - 最後にイメージ名を指定する(今回は
nginx
)
このあとWebブラウザでhttp://localhost
にアクセスしたら、nginxサーバーの初期画面がきちんと表示されました。
Dockerコンテナの一覧表示
$ docker container ls
-a
オプションなしのdocker container ls
は、現在実行中のコンテナの一覧を表示します。
例えばwebserver
という名前のnginx
イメージによるコンテナがサービス実行中の場合、実行結果は以下のようになります。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c36d096e5202 nginx "nginx -g 'daemon of…" 13 seconds ago Up 12 seconds 0.0.0.0:80->80/tcp webserver
続いてdocker container ls -a
です。
$ docker container ls -a
docker container ls -a
は、実行中・停止中問わず、現在自環境上に存在するコンテナの一覧を表示します。
例えばwebserver
という名前のnginx
イメージによるサービス停止中のコンテナが存在する場合、実行結果は以下のようになります。
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c36d096e5202 nginx "nginx -g 'daemon of…" 46 seconds ago Exited (0) 4 seconds ago webserver
4秒前に正常に停止されたという状態も表示されていますね。
Dockerコンテナのサービス停止
$ docker container stop webserver
docker container stop {コンテナ名}
コマンドにより、Dockerコンテナを削除することなくサービス停止することができます。上記コマンドは、webserver
という名前のdockerコンテナのサービスを停止するコマンドです。
$ docker container start webserver
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c36d096e5202 nginx "nginx -g 'daemon of…" 13 seconds ago Up 12 seconds 0.0.0.0:80->80/tcp webserver
$ docker container stop webserver
webserver
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c36d096e5202 nginx "nginx -g 'daemon of…" About a minute ago Exited (0) 2 seconds ago webserver
一連の動作は以上のようになります。
Dockerコンテナの削除
$ docker container rm webserver
docker container rm {コンテナ名}
コマンドにより、Dockerコンテナを完全に削除することができます。上記コマンドは、webserver
という名前のdockerコンテナのサービスを削除するコマンドです。
$ docker container stop webserver
webserver
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c36d096e5202 nginx "nginx -g 'daemon of…" About a minute ago Exited (0) 2 seconds ago webserver
$ docker container rm webserver
webserver
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
全体としての実行結果は、以上のようになります。