3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows10でDocker(Docker Desktop)を使う

Last updated at Posted at 2022-06-17

概要

WindowsでDockerを使おうとしたわけですが、最後に使ってから2年以上経過していたので、現在のDockerを把握した上で、「自己整理」しながら再開してみます。

前提条件

  • Windows10 64bit
  • Docker Desktop

ここ数年のDockerの動向を整理する

image.png

かなりページ構成も変わってて、以前通った定食屋に久しぶりに行ったらネクタイ着用してないといけなくなったみたいな感じです。

Docker Desktopの有償化?

Windowsで使っていたDocker Desktopが、一定の条件を満たしてしまうと無償では使えなくなったようです。
個人で使っているので、依然セーフということですが、企業で使う場合は要注意。

個人で使うならPersonal

サブスク状態でライセンスがあるので、個人で使うなら「Personal」でまずは十分かなと・・・

image.png

Docker Desktopはどこ?

Dockerへのサインインを要求されますが、どのサブスクでもDocker Desktopは使えるので、サインインしなくてもDLできそうですが・・・

「Developers」-「Getting started」
image.png

ありましたね・・・
こっから、Docker DesktopのインストーラをDLします。
image.png

Docker Desktopのインストール

DLした「Docker Desktop Installer.exe」を実行します。
意外にインストール時間は長いです。

image.png

image.png

image.png
PCが再起動します。

Docker Desktopを起動する

デスクトップにDocker Desktopのアイコンが追加されるので、起動してみます。

image.png
同意事項が表示されるので「I accept the terms」にチェックを入れて「Accept」ボタンをクリックします。
(ちなみに、この同意事項は、前述の「条件によって有償化されるぞ」の件です。)

image.png
Docker Desktopが起動した・・・・・と思ったら、何かメッセージが表示されます。
私はIntel系ですが、AMD系は対応が違うようです。

image.png
表示されているURLへアクセスして、対応したら「Restart」ボタンを押してね。とのこと。

飛んだ先は、「Linuxカーネル更新プログラム パッケージをダウンロードする」ということなので、「x64マシン用WSL2 Linuxカーネル更新プログラム パッケージ」をクリックして、DLされる「wsl_update_x64.msi」を実行してインストールします。
image.png

image.png
「Next」ボタンを押して・・・

image.png
終了です。
「Finish」ボタンを押して、先ほどの「Restart」を押します。

無事、Docker Desktopが起動しました。
image.png
「Start」を押すとチュートリアルに進みます。
不要な人は「Skip Tutorial」を押します。
image.png

多少、見覚え感のある画面になりました。
(でも、数年前の状態とは全く違う・・・)

Docker Desktopの起動を確認する

アプリ自体が起動している以外に、Dockerの起動を確認する場所があります

システムトレイにDockerがあるので、そこを確認します。
image.png

アップデートがある(「!」が表示されてる)ようですね。
アイコンを右クリックすると、システムメニューが表示されます。
image.png

アプリ自体を終了させても、実はバックグラウンドで起動しているので「Dockerを完全に終了する」には、このシステムトレイから「Quit Docker Desktop」を実行しないと停止しません。

Docker Desktopを更新する

「Updateがある」とアイコンで表示されていたので「Download update...」を実行します。
image.png

そうすると、上記のようにUpdateのメニューが表示されるので「Download update」ボタンを押します。
image.png

「Download update」ボタンが「Update and restart」に変わるので、再度ボタンを押します。

Docker Desktopが再起動されて更新が完了します。
image.png
右下のバージョン番号が「v4.9.1」になってますね。

Docker Desktopから操作してみる

まずは、Homeメニューから「Ubuntu」の「Run」を押します。
image.png

そうすると、下記のようにDockerの「ubuntu:latest」が取得されます。
image.png

しばらくするとDownloadが済んだよ。と表示され、Ubuntuが起動します。
image.png

起動すると、下記のような状態になります。
image.png

そうしたら、Terminalを開きます。(下記のTerminalボタンをクリック)
image.png

そうすると、TerminalにDockerで起動したUbuntuへログインした状態で表示されます。
image.png

なんか操作してみると、動いていますね・・・

image.png

DockerのUbuntuをDownloadして起動したことによって、Imageが作られるので、Docker DesktopのImagesメニューを見てみると、起動したubuntuが存在していることが分かります。
image.png

続いて、Containersメニューに戻ります。
image.png

Containersメニューに戻ると、先ほどの画面と違う表示になりますが、下記をクリックすると
image.png

image.png

下記をクリックすると
image.png

image.png

となります。

それでは、起動しているUbuntuのコンテナを停止してみます。(停止ボタンを押します)
image.png

停止すると、下記のような状態になります。
image.png

もう一度、同じコンテナを起動したいなら「再生ボタン」、このコンテナを廃棄したいならゴミ箱ボタンを押すことになります。

では、コンテナを「廃棄」しましょう。(ゴミ箱ボタンをクリック)
image.png

永久になくなるぜ!と警告が出ますが、そのまま継続します。
Containersメニューには、コンテナがなくなったので初期状態になります。
image.png

ImageとContainerの話

前項でUbuntuのコンテナを消しました。
そこで、Docker Desktopの「Images」メニューを表示します。
image.png

はい、なんかまだUbuntuが居ますね。
消したはずなのに・・・・と思った人は、ここでしっかり理解しないとダメですね。

イメージしやすいように、下記のようなことを考えてみます。

作ろうとするもの(あくまでイメージとして捉えてください)

1)まずは、Ubuntuから「Ubuntu 22.04(Latest)」をDLします
https://jp.ubuntu.com/
2)DLしたUbuntuをPCにインストールして、Apache2.4をインストールします

bash
$ sudo apt-get update 
$ sudo apt-get install -y apache2

3)自作したHTMLを入れます
4)動作確認します

Dockerだと

まずは、DLするUbuntuが「Image」に該当します
続いて、Apacheをインストールするのと、自作したHTMLを入れる先が「Container」になります。
「Image」を使って、Apacheを入れたContainerや、Nginxを入れたContainerなど用途はいろいろです。

プログラマーの人だと、ImageがClass。ContainerがInstanceというところでしょうか。

さらにもう一歩

ところで、前述の「Apacheをインストール」のをContainerを作ってから毎回やるのは面倒ですよね?
そういう時には、
1)Dockerfileという手があります
 →これは、Ubuntu:LatestをDLしてきて、Apacheを入れて、XXの設定をして・・・・というのをスクリプトで記述しておくと、ローカル上で管理されるImageはすでに「自作したHTMLを入れる」直前までを済ませることができます。
2)そもそもApacheのDockerイメージを取得する
 →これは、Dockerの仕組みを把握してないと「?」という感じですね。
  理解の補助としては、DLしてくる時点でApacheまで入っているという状況だと思ってください。(実際はレイヤーなど理解が必要です)

Dockerコマンドで柔軟に操作する

さて、Docker Desktopをインストールしている状況で、GUIでの操作ばかり記述していたので、GUIからしか操作できないのか?
というと、実はDockerはCUIでの操作の方が多いです。

早速、コマンドプロンプトかPowerShellを起動して「docker」と入力して実行してみましょう。
image.png

なんかデロデロと出ましたね。
Docker Desktopをインストールしたことで、コマンドも使えるようになっています。

ここまでで、「Ubuntu:latest」のImageを取得して、一旦Containerを作って起動したが「Container」は破棄した。となっている状況です。

そこで「docker images」と入力してみます。

powershell
PS C:\> docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    27941809078c   10 days ago   77.8MB
PS C:\>

ローカルにあるImageのリストが表示されました。

それでは、これを起動(Containerを作る)してみましょう。

powershell
PS C:\> docker run -it ubuntu
root@1872dc90c743:/#

DockerのGUI側を見てみると、Container側に表示されていることが分かります。
image.png

ちなみに、「docker run -it ubuntu」ですが、「run」は「起動」なので割愛。「ubuntu」は使用するImageです。
では「-it」は何か?
「-」はオプションです。「t」は「tty」つまり「Terminal」です。これがないとアカン。
そして「i」は「interactive」つまり「入力待ち」です。
このオプションによって、Containerを起動したら「root@1872dc90c743:/#」といったようにTerminalが表示されて入力できる状態になってます。

Containerを終了させてみましょう。

powershell
root@1872dc90c743:/# exit
exit
PS C:\>

GUI側も停止した状態になってますね。
image.png

それでは、最後にContainerを削除しましょう。
削除するにはContanerのID(もしくは名前)が分からないといけません。

まずはContainerの一覧を表示します。

powershell
PS C:\> docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                       PORTS     NAMES
1872dc90c743   ubuntu    "bash"    13 minutes ago   Exited (127) 4 minutes ago             tender_poincare

続いて、ContainerIDを指定して削除します。

powershell
PS C:\> docker rm 1872dc90c743
1872dc90c743

確認してみます。

powershell
PS C:\> docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
PS C:\>

GUI側も、消えてますね。
image.png

長くなったので、ここまで。
次回は、DockerfileやDocker-Composeを「自己整理」してみよう。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?