LoginSignup
13
17

More than 5 years have passed since last update.

Windows 10 Hyper-Vユーザに送るDockerの解説

Last updated at Posted at 2018-02-15

この記事は?

Dockerの勉強を始めて1週間、Hyper-Vしか知らない同僚にDocker教えてくれと言われたので書きました。
せっかく勉強したのでQiitaで公開してみます。
誤り指摘やアドバイスがあれば、コメントをお願いします。

環境

  • Windows10 version.1709
  • Docker version 17.12.0-ce, build c97c6d6

用語説明

  • Dockerイメージ
    仮想ディスク(=.vhdx)。後述するDockerレジストリでDockerイメージを共有することができる。
    Dockerを使って何か作業する時のベースとなる。

  • Dockerコンテナ
    Dockerイメージから差分ディスクを作って起動した仮想PC。
    1つのイメージから複数のDockerコンテナを作ることができ、それぞれの同時実行も可能。

  • Dockerレジストリ
    仮想ディスクを共有するための共有フォルダ。
    Docker Hubという公式レジストリもあり、公式イメージとして、CentOSやUbuntuといったLinuxディストリビューションやNginxやHttpd、redisといったアプリケーション単位のイメージがある。
    自分で作ったイメージをアップロードすることもできる。
    オンプレミスなサーバとしても立てることができるらしい。

  • Dockerfile
    Dockerイメージを作るためのソースコード。
    無理やりHyper-Vでいうと仮想PC作成後に実行するためのスクリプトファイルみたいもの。
    Hyper-Vで例えると、イメージから仮想ディスクを複製→VM起動→スクリプト実行→シャットダウンまでを一括で行って、新しい仮想ディスク(=Dockerイメージ)を作ることができる。

FAQ

  • 要するにDockerって仮想PCみたいなもの?
    →仮想PCのようにも使えますが、どちらかというとアプリケーション単位でコンテナを作るほうが良いようです。
    そういう意味では、OSの機能まで含めてサイドバイサイドでアプリケーションを実行できるプラットフォームと呼ぶべきでしょうか。

  • Windows on Dockerは?
    →できるようですが、まずはDocker入門としてここでは扱いません。
    タスクバーのDockerアイコンを右クリックすると「Switch to Windows Containers」というメニューがありますので、あとは自分でググってください。
    個人的にはWindows on Dockerはもう少し様子見です。

コマンド体系

他にあるけど、基本ということで。

Docker_Basic_Commands.png

使ってみる

事前準備

  1. Windows10を用意します。
  2. Hyper-Vを有効化します。
  3. Docker for Windowsをインストールします。 (Chocolateyパッケージもあったけど、インストール失敗しました(2018-02-13現在)。)
  4. Dockerのアカウント作成とログイン・・・は不要だったはず。

CentOSでbashを起動して、後始末まで

できるだけゴミを残さないようにがんばってみる。

1.公式イメージをダウンロードする

Docker HubからCentOSのDockerイメージをダウンロードします。

C:\Users\user> docker pull centos
Using default tag: latest
latest: Pulling from library/centos
af4b0a2388c6: Pull complete
Digest: sha256:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
Status: Downloaded newer image for centos:latest

2. ローカルのイメージの一覧

ローカルに保存済みのイメージ一覧を表示させます。
先ほどPullしたcentosがあります。

C:\Users\user>docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              ff426288ea90        5 weeks ago         207MB

3.コンテナを作って起動

pullしたイメージをベースにコンテナを作って起動します。
起動するプロセス(/bin/bash)も引数に指定します。
-it はインタラクティブに操作する場合に指定します。

C:\Users\user> docker run -it centos /bin/bash

4. 適当に触る

bashが起動するので、適当に触ります。
ほぼ空のCentOSなので本当に基本的なコマンドしか使えませんが。
終了は、コンテナが終了しちゃいますが、exitで抜けます。
「Ctrl+p」→「Ctrl+q」で終了せずに抜けることもできます。

[root@051c55f61ce6 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@051c55f61ce6 /]# ping -c 2 localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.024 ms

--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1033ms
rtt min/avg/max/mdev = 0.020/0.022/0.024/0.002 ms
[root@051c55f61ce6 /]# exit
exit

5. コンテナ一覧

ローカルにあるコンテナ一覧を表示します。
先ほど起動したcentosのbashがあります。
-aをつけると終了済みのコンテナも表示、無しだと稼働中コンテナだけ表示されます。
CONTAINER ID (コンテナID)は重要なのではじめの数文字を覚えておきます。

C:\Users\user>docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                   PORTS               NAMES
051c55f61ce6        centos              "/bin/bash"         3 hours ago          Exited (0) 3 hours ago                       clever_leavitt

6. コンテナ削除

お試しで作っただけなのでコンテナは削除します。
引数はコンテナIDを指定しますが、他と識別できる初めの数文字で良いようです。

C:\Users\user>docker rm 05
05

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

7. イメージ削除

使わずに残しておくとディスクを圧迫するので、不要なイメージは削除します。
後で使うなら削除しなくても良いですが。

C:\Users\user>docker image rm centos
Untagged: centos:latest
Untagged: centos@sha256:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
Deleted: sha256:ff426288ea903fcf8d91aca97460c613348f7a27195606b45f19ae91776ca23d
Deleted: sha256:e15afa4858b655f8a5da4c4a41e05b908229f6fab8543434db79207478511ff7

C:\Users\user>docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

Dockerコンテナをサービスとして使う

上の例では、インタラクティブに操作していて、仮想PCのように使っていますが、
Dockerコンテナはサービスとしてバックエンドで起動するほうが一般的なようです。

ポイントは、「docker run -it 」ではなく「docker run -d」を使用します。

チュートリアル的に何か書こうと思いましたが、良い記事があったので、こちらを参考にしてください。

13
17
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
13
17