BETA

プログラマのためのDocker教科書 まとめ(3章)

投稿日:2018-12-31
最終更新:2018-12-31

この記事は、プログラマのためのDocker教科書を読んでひたすらまとめていく記事です!

なにか参考になればと思っております。
(何卒優しい目で見てやってください。)
(逐一、コメント的なの突っ込んでいくスタイルなので、そこもよろしくおねがいします。)

第3章 Dockerのインストールとチュートリアル

目次

  • 3.1 Dockerのインストールと動作確認
  • 3.2 Webサーバを動かしてみよう

3.1 Dockerのインストールと動作確認

*本書は、Mac、Windowsどちらも書いてあるが、今回はMacのみで進めていきます。

①Docker for Macのインストール
Docker for Macは、macOS向けのネイティブアプリケーション
こちらからインストールできる↓↓↓
https://docs.docker.com/docker-for-mac/install/

【DockerでHello World】
インストールしたDockerが正常に動作するかを確認するために、Dockerコンテナを作成し、コンソール上で表示する

    docker container run Dockerイメージ名 実行コマンド  

docker container run => コンテナを作成/実行
Dockerイメージ名 => 元となるDockerイメージ
実行コマンド => コンテナ内で実行するコマンド

②Dockerのバージョンチェック
正常にインストールされていればDockerのバージョンを確認することができる。

    docker version  

    以下、実行結果  
    Client:  
     Version:      18.03.1-ce  
     API version:  1.37  
     Go version:   go1.9.5  
     Git commit:   9ee9f40  
     Built:        Thu Apr 26 07:13:02 2018  
     OS/Arch:      darwin/amd64  
     Experimental: false  
     Orchestrator: swarm  

    Server:  
     Engine:  
        Version:      18.03.1-ce  
        API version:  1.37 (minimum version 1.12)  
        Go version:   go1.9.5  
        Git commit:   9ee9f40  
        Built:        Thu Apr 26 07:22:38 2018  
        OS/Arch:      linux/amd64  
        Experimental: true  

③Dockerの実行環境確認
以下のコマンドを実行すると、Dockerの実行環境の詳細設定が確認できる。

    docker system info  

    以下、実行結果  
    Containers: 333  
    Running: 0  
    Paused: 0  
    Stopped: 333  
    Images: 114  
    Server Version: 18.03.1-ce  
    Storage Driver: overlay2  
    Backing Filesystem: extfs  
    Supports d_type: true  
    Native Overlay Diff: true  
    Logging Driver: json-file  
    Cgroup Driver: cgroupfs  
    Plugins:  
    Volume: local  
    Network: bridge host ipvlan macvlan null overlay  
    Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog  
    Swarm: inactive  
    Runtimes: runc  
    Default Runtime: runc  
    Init Binary: docker-init  
    containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88  
    runc version: 4fc53a81fb7c994640722ac585fa9ca548971871  
    init version: 949e6fa  
    Security Options:  
    seccomp  
    Profile: default  
    Kernel Version: 4.9.87-linuxkit-aufs  
    Operating System: Docker for Mac  
    OSType: linux  
    Architecture: x86_64  
    CPUs: 2  
    Total Memory: 1.952GiB  
    Name: linuxkit-025000000001  
    ID: I4GP:WVGY:DKOR:YXMQ:NW5I:BYS5:2NNR:T2EY:GQZN:ZTTP:JSJU:PVZ4  
    Docker Root Dir: /var/lib/docker  
    Debug Mode (client): false  
    Debug Mode (server): true  
    File Descriptors: 21  
    Goroutines: 39  
    System Time: 2018-12-31T01:51:48.642599Z  
    EventsListeners: 2  
    HTTP Proxy: docker.for.mac.http.internal:3128  
    HTTPS Proxy: docker.for.mac.http.internal:3129  
    Registry: https://index.docker.io/v1/  
    Labels:  
    Experimental: true  
    Insecure Registries:  
    127.0.0.0/8  
    Live Restore Enabled: false  

④Dockerのディスク利用状況
以下のコマンドを実行すると、Dockerが使用しているディスクの利用状況を確認できる

    docker system df  

    以下、実行結果  

    TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE  
    Images              37                  24                  11.4GB              4.928GB (43%)  
    Containers          333                 0                   865.1MB             865.1MB (100%)  
    Local Volumes       5                   1                   0B                  0B  
    Build Cache                                                 0B                  0B  

⑤やっとこさ、HelloWorld
runコマンドで、コンテナを作成する

    docker run hello-world  

    以下、実行結果  
    Hello from Docker!  
    This message shows that your installation appears to be working correctly.  

    To generate this message, Docker took the following steps:  
     1. The Docker client contacted the Docker daemon.  
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.  
            (amd64)  
     3. The Docker daemon created a new container from that image which runs the  
            executable that produces the output you are currently reading.  
     4. The Docker daemon streamed that output to the Docker client, which sent it  
            to your terminal.  

    To try something more ambitious, you can run an Ubuntu container with:  
     $ docker run -it ubuntu bash  

    Share images, automate workflows, and more with a free Docker ID:  
     https://hub.docker.com/  

    For more examples and ideas, visit:  
     https://docs.docker.com/get-started/  

⑥せっかく作ったコンテナを削除する
起動中のコンテナを確認

    docker ps -a  

    実行結果  
    CONTAINER ID        IMAGE               COMMAND             CREATED                  STATUS                     PORTS               NAMES  
    (適当な文字列)        hello-world         "/hello"            Less than a second ago   Exited (0) 2 seconds ago                       festive_darwin  

そして、消す。

    docker rm (コンテナ名、またはコンテナID)  
    docker ps -a でコンテナ一覧を表示  

    実行結果  
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  

消えた。きえてしまった。

⑦とどめのイメージを削除する
以下のコマンドでこれまで取得したイメージの一覧を表示。

    docker images  

    実行結果  
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE  
    hello-world          latest              (適当な文字列)         3 months ago        1.84kB  

以下のコマンドでコンテナを削除

    docker rm hello-world  

    実行結果  
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE  

長かったぜ

3.2 Webサーバを動かしてみよう
今回は、オープンソースのwebサーバのNginxを使ってみる
①Dockerイメージのダウンロード

    docker pull nginx  

    実行結果  
    Using default tag: latest  
    latest: Pulling from library/nginx  
    177e7ef0df69: Pull complete   
    ea57c53235df: Pull complete   
    bbdb1fbd4a86: Pull complete   
    Digest: sha256:b543f6d0983fbc25b9874e22f4fe257a567111da96fd1d8f1b44315f1236398c  
    Status: Downloaded newer image for nginx:latest  

②イメージの確認

    docker image ls  

    実行結果  
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE  
    nginx                latest              7042885a156a        47 hours ago        109MB  

③Nginxを動かす

     docker container run --name webserver -d -p 80:80 nginx  

     実行結果  
     8f5ba254808c290d8f4cc4fa21c293a57370f3b32aca7007ca6184a7f1352c17  
     これは、コンテナID  

④Nginxのサーバの状態確認

    docker container ps  

    実行結果  
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES  
    8f5ba254808c        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp   webserver  


    docker container stats webserver  

    実行結果  
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS  
    8f5ba254808c        webserver           0.00%               1.934MiB / 1.952GiB   0.10%               4.04kB / 2.36kB     0B / 0B             2  

⑤Nginxの起動と停止
コンテナの停止

    docker stop webserver  

コンテナの起動

    docker start webserver  

以下の記事参考にさせていただきました!

https://qiita.com/kobori_akira/items/0cc993caeb20d77cd367

https://qiita.com/boiyaa/items/9972601ffc240553e1f3

ありがとうございます!

第3章は以上です!
次は、Dockerコマンドについてです!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@hamaの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!