WindowsにDocker Desktopをインストールする
インストール
WindowsにDocker Desktopをインストールするには下記のオフィシャルサイトからインストーラーをダウンロードして実行します。
オフィシャルサイトのトップページのGet Started
ボタンをクリックして下図のページにアクセスします。このページのDownload for Windows
というボタンをクリックするとインストーラーファイル(Docker Desktop Installer.exe
)のダウンロードが始まります。
インストーラーファイルのダウンロードが終わったらクリックしてインストールを実行します。インストールは特にデフォルトのまま進めて問題ありません。
この画面が表示されたらClose and log out
ボタンをクリックしてインストーラーを終了します。
ここでいったんPCを再起動します。
再起動したらコマンドプロンプトを開き、下記のコマンドを実行してバージョンを確認します。
> docker --version Docker version 20.10.0, build 7287ab3 > docker-compose --version docker-compose version 1.27.4, build 40524192
チュートリアル
PC再起動後に、Dockerが自動的に起動され下図の画面が表示されます。
この画面からGet Started
というチュートリアルを始めることができます。チュートリアルを始めたい場合はStart
ボタンをクリック、その必要がなければSkip tutorial
というリンクをクリックして終了します。
以降はチュートリアルの説明になりますので興味のある方は読んでみてください。
チュートリアルはclone
→ build
→ run
→ share
の4つのステップに分かれています。
clone
チュートリアルを始めると下図の画面が表示されます。画面の右側にはPowerShellのコンソールが表示されています。
clone
ステップでは、コンテナとコンテナ上で実行するアプリケーションに必要なファイルをGitHubリポジトリからクローンします。
The Getting started project is a simple GitHub repository which contains everything you need to build an image and run it as a container.
上図の赤線で囲った部分をクリックすると下記のdockerコマンドが右側のコンソールで実行され、その結果が表示されます。
実行されるdockerコマンドは下記の通りです。
docker run --name repo alpine/git clone https://github.com/docker/getting-started.git
docker cp repo:/git/getting-started/ .
実行するコマンドの意味は
1つ目のrun
コマンドでイメージからコンテナを作成し、指定されたコマンドを実行します。
--name
でコンテナに名前を付けています。この場合repo
がコンテナ名になります。alpine/git
はコンテナの生成に使用するイメージの名前です。clone https://github.com/docker/getting-started.git
はコンテナで実行するコマンドのオプションです。
実行するコマンドはgit
で、コンテナ内でgit clone https://github.com/docker/getting-started.git
が実行され、Githubからgetting-started.git
リポジトリがクローンされます。
2つ目のcp
コマンドでコンテナ内のファイルをホスト、つまりWindowsへコピーします。
repo:/git/getting-started/
は、コロンの左側のrepo
がコンテナ名を指し、右側の/git/getting-started/
がコピー元のディレクトリ or ファイルを指します。.
はコピー先を指していて、ピリオドとしているのでWindowsのカレントディレクトリがコピー先になります。
つまりrepo
コンテナ内にクローンした/git/getting-started/
ディレクトリをWindowsのカレントディレクトリへコピーします。
ユーザーのホームディレクトリ(カレントディレクトリ)を確認するとgetting-started
というディレクトリが作成されており、下記のディレクトリ/ファイルがコピーされていることがわかります。
下図は上記のdockerコマンドの実行後の状態です。右側にdockerコマンドの実行結果が出力されています。
Next Step
ボタンをクリックして次へ進みます。
build
次はイメージのビルドを行います。先ほどの作業でWindows上にgetting-started
をコピーしましたが、このディレクトリ内にビルドに必要なDockerfileや、実行するアプリケーションのソースコードが含まれています。
build
ステップでは、クローンしたリポジトリに含まれるDockerfileを使ってイメージをビルドします。
A Docker image is a private file system just for your container. It provides all the files and code your container needs.
図の赤線で囲った部分をクリックすると下記のdockerコマンドが右側のコンソールで実行され、その結果が表示されます。
実行されるコマンドは下記の通りです。
cd getting-started
docker build -t docker101tutorial .
実行するコマンドの意味は
1つ目のcd
は、Windowsのcdコマンドでカレントディレクトリをgetting-started
に移します。
2つ目のbuild
はdockerコマンドで、Dockerfileからイメージをビルドします。
-t
でイメージにタグを付けています。この場合docker101tutorial
がタグ名です。.
でカレントディレクトリを指しているので、カレントディレクトリにあるDockerfileを使ってイメージをビルドします。
下図は上記のdockerコマンドの実行後の状態です。右側にdockerコマンドの実行結果が出力されています。
Next Step
ボタンをクリックして次へ進みます。
run
run
ステップではビルドしたイメージからコンテナを作成し実行します。
Start a container based on the image you built in the previous step. Running a container launches your application with private resources, securely isolated from the rest of your machine.
図の赤線で囲った部分をクリックすると下記のdockerコマンドが右側のコンソールで実行され、その結果が表示されます。
クリックすると下記のコマンドが実行されます。
docker run -d -p 80:80 --name docker-tutorial docker101tutorial
実行するコマンドの意味は下記の通りで
-d
でコンテナをバックグラウンドで実行します。-p 80:80
でコンテナのポート80
を、ホスト(Windows)のポート80
にバインドします。--name
でコンテナに名前を付けます。この場合コンテナにはdocker-tutorial
という名前が付けられます。docker101tutorial
はコンテナの生成に使用するイメージの名前です。
下図は上記のdockerコマンドの実行後の状態です。右側にdockerコマンドの実行結果が出力されています。
Next Step
ボタンをクリックして次へ進みます。
Share
Share
ステップは、ビルドしたイメージをDocker Hubで共有するチュートリアルですが、Docker Hubにアカウントを作成する必要があるのでこの記事では割愛します。
Done
ボタンをクリックして次へ進みます。
You must be signed in to Docker Hub to share your image.
アプリケーションにアクセス
下図の赤い線で囲ったボタンをクリックするとブラウザが立ち上がり、docker-tutorial
コンテナで実行されているアプリケーションにアクセスします。
ブラウザのアドレスバーにはhttp://localhost/
が表示されていると思います。Windows(localhost)のポート80
は、コンテナのポート80
にバインドされているので、このアドレスにアクセスするとコンテナで実行されているWebアプリケーションにアクセスすることになります。
ダッシュボード
Docker Desktopを見ると下図の画面が表示されていると思いますが、これがDocker Desktopのダッシュボード画面です。ダッシュボードでイメージやコンテナの一覧表示やその他のいろいろな操作が行えます。
Containers/Apps
下図の赤い下線が引いてあるContainers/Apps
をクリックするとコンテナが一覧表示されます。
赤い枠線で囲ったコンテナ(docker-tutorial
)が、現在実行しているアプリケーションです。
コンテナ名をクリックすると、そのコンテナの詳細を確認することができます。下図の赤い下線が引いてあるLogs
ではWebアプリケーションのログを確認することができます。
同様にInspect
では、コンテナの環境変数や公開しているポートを確認することができます。
同様にStats
ではコンテナのステータスを確認することができます。
Images
下図の赤い下線が引いてあるImages
をクリックするとイメージが一覧表示されます。
赤い枠線で囲ったイメージ(docker101tutorial
)が、現在実行しているコンテナ(docker-tutorial
)のイメージです。
コンテナの操作
コンテナの一覧でコンテナにマウスカーソルを合わせると、右側にその時点でコンテナに対して操作できるボタンが表示されます。
コンテナが起動しているとき
チュートリアルのdocker-tutorial
コンテナでは下図のボタンが表示されます。
このコンテナではWebアプリケーションが実行されているので、OPEN IN BROWSER
というボタンが表示されています。そうでなければこのボタンは表示されません。
ICON | ICON TEXT | DESCRIPTION |
---|---|---|
OPEN IN BROWSER |
ブラウザを起動する | |
CLI |
コンテナでシェルを実行する | |
STOP |
コンテナを停止する | |
RESTART |
コンテナを再起動する | |
DELETE |
コンテナを削除する |
コンテナが停止しているとき
コンテナが停止しているときは、コンテナの起動と削除しか操作できないことがわかります。
ICON | ICON TEXT | DESCRIPTION |
---|---|---|
START |
コンテナを起動する | |
DELETE |
コンテナを削除する |
コマンドラインで操作
イメージを取得してコンテナを生成する
コマンドプロンプト(このプロンプトをAと呼ぶ)を開き、pull
コマンドでubuntuイメージを取得します。
> docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu da7391352a9b: Pull complete 14428a6d4bcd: Pull complete 2c2d948710f2: Pull complete Digest: sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest
コマンドプロンプトAで、run
コマンドを実行し、ubuntuイメージからmyubuntuという名前のコンテナを生成してbashコマンドを実行します。
> docker run -it --name myubuntu ubuntu /bin/bash root@7bb7c2d04158:/#
別のコマンドプロンプト(このプロンプトをBと呼ぶ)を開きps
コマンドを実行すると、そのときに実行されているコンテナの一覧を確認できます。
> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7bb7c2d04158 ubuntu "/bin/bash" 6 seconds ago Up 5 seconds myubuntu
コマンドプロンプトAに戻り、bashのプロンプトからexitを実行してbashを終了すると、コマンドプロンプトに制御が戻ります。
root@7bb7c2d04158:/# exit exit
コマンドプロンプトBで、もう一度ps
コマンドを実行すると、コンテナが終了していることが確認できます。
> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
停止しているコンテナを起動する
start
コマンドでコンテナを起動します。
> docker start myubuntu myubuntu
> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7bb7c2d04158 ubuntu "/bin/bash" 14 minutes ago Up 13 seconds myubuntu
コンテナにアクセスする
アクセスするにはexec
コマンドかattach
コマンドを使用します。
execコマンド
> docker exec -it myubuntu /bin/bash root@7bb7c2d04158:/#
root@7bb7c2d04158:/# exit exit
exit後もコンテナは実行されています。
> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7bb7c2d04158 ubuntu "/bin/bash" 21 minutes ago Up 6 minutes myubuntu
attach コマンド
> docker attach myubuntu root@7bb7c2d04158:/#
root@7bb7c2d04158:/# exit exit
exitするとコンテナも停止します。
> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES