15
13

More than 5 years have passed since last update.

Dockerの基礎をまとめてみた ~ 第二章:Dockerの基本操作

Last updated at Posted at 2018-10-09

第二章 : Dockerの基本操作

本章では、Dockerの基本的な操作ついて記載します。

Dockerのインストール

Dockerを利用するためには、Dockerをホストマシンにインストールする必要があります。現在(2018/10時点)では、ここのページからDockerをダウンロードすることができます。

Dockerのインストール手順には公式ページや、他のサイトにも記載がありますので本記事では割愛します。

概要

第一章でも記載しましたが、Dockerの大きな機能は以下の3つです。

  1. Dockerイメージを作成する機能(Build)
    アプリケーションを動かすために必要な、コード/ライブラリ/ミドルウェア/OSなどをひとまとめにしたものをDockerイメージとして作成します。Dockerイメージは、コマンドラインから作成したり、Dockerfileから作成することが可能です。

  2. Dockerイメージを共有する機能(Ship)
    Dockerレジストリ(Docker Hub)を利用し、イメージを管理します。Docker Hubでは、イメージのアップロードやダウンロード、検索などが行えます。

  3. Dockerコンテナを実行する機能(Run)
    Dockerイメージをビルドし、コンテナとして実行することができます。コンテナは、開始/停止/削除が行えます。

これら機能を図示すると以下のような関連になります。

Docker概要図.png

今回は、以下のような流れを簡単なコマンドと共に実行し、Dockerの基本的な部分を学んでいきたいと思います。今回はnginxのイメージを利用します。

  1. イメージの取得
  2. コンテナの作成
  3. コンテナの実行
  4. コンテナの停止
  5. コンテナの削除

※ここで触れない操作は以降の記事でまとめる予定です。

イメージの取得

最初にnginxのイメージを取得します。イメージを取得するには、 docker image pull コマンドを利用します。

02 $ docker image pull nginx:latest
latest: Pulling from library/nginx
802b00ed6f79: Pull complete
5291925314b3: Pull complete
bd9f53b2c2de: Pull complete
Digest: sha256:9ad0746d8f2ea6df3a17ba89eca40b48c47066dfab55a75e08e2b70fc80d929e
Status: Downloaded newer image for nginx:latest

イメージ取得できたか確認するには、 docker image ls コマンドを利用します。このコマンドを利用すると、取得したイメージの一覧を表示することができます。

02 $ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              be1f31be9a87        5 days ago          109MB

ちなみにnginxの公式リポジトリはこちらです。
library_nginx_-_Docker_Hub.png

コンテナの作成

イメージを取得したので、イメージを元にコンテナを作成します。コンテナを作成するには、 docker container create コマンドを利用します。
※コンテナの作成と実行をまとめてできる docker container run コマンドがありますが、今回は流れを追うために作成と実行を分けて行います。

今回は、以下のオプションを付与しています。

  • --name : コンテナの名前を設定します → 今回は demo-nginx としています
  • -p : 発行するポートを指定します → 今回は、 ホストマシン上で localhost:8080にアクセスすると、コンテナの 80 に繋がれnginxのWelcomeページが表示されるようにしています
02 $ docker container create --name demo-nginx -p 8080:80 be1f31be9a87
c7f0448d9fd987a28cddabe61793b1a9df5fac9f376e6d7dab7cc69dc49ae18e

コンテナが出来たか確認するには、 docker container ls を利用します。ただし、オプションを指定しない場合は、実行中のコンテナしか表示されないため、今回は -a オプションを利用します。 -a オプションは、全てのコンテナを表示するオプションです。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
c7f0448d9fd9        be1f31be9a87        "nginx -g 'daemon of…"   4 minutes ago       Exited (0) 2 seconds ago                       demo-nginx

上記よりコンテナが作成されていることが確認出来ました。

コンテナの実行

docker container create コマンドで作成した場合は、コンテナが停止状態となっています。実行状態にするには、 docker container start コマンドを実行します。

先ほど確認した CONTAINER ID(c7f0448d9fd9) でコンテナを実行します。

02 $ docker container start c7f0448d9fd9
c7f0448d9fd9

コンテナが起動されたかを、 docker container ls で確認します。

02 $ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
c7f0448d9fd9        be1f31be9a87        "nginx -g 'daemon of…"   17 minutes ago      Up 2 minutes        0.0.0.0:8080->80/tcp   demo-nginx

STATUSに、 Up 2 minutes と表示されています。これで、起動されていることが確認できます
もしくは、 docker ps コマンドでも確認することができます(結果は同じです)。

では、nginxのWelcomeページを表示できるか確かめてみます。

http://localhost:8080 でアクセスします(ブラウザからでも、 curlコマンドでもOKです)。

02 $ curl http://localhost:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Welcome_to_nginx.png

WelcomeページのHTMLが返却されているので、問題なく実行していることが確認できました。

コンテナの停止

次に実行中のコンテナを停止してみます。コマンドは、 docker container stop c7f0448d9fd9 です。

02 $ docker container stop c7f0448d9fd9
c7f0448d9fd9

コンテナが停止しているか確認してみます。

02 $ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

URLからの方も確認してみます。

02 $ curl http://localhost:8080
curl: (7) Failed to connect to localhost port 8080: Connection refused

localhost.png

コンテナの削除

最後に作成したコンテナを削除します。コマンドは、 docker container rm c7f0448d9fd9 です。

02 $ docker container rm c7f0448d9fd9
c7f0448d9fd9

コンテナが削除されているか確認してみます。

02 $ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

削除されていることがわかりました。

以上で基本的な部分の操作は終わりです。
次からは、Dockerで用意されているコマンドについてまとめていきたいと思います。

まとめ一覧

Dockerの基礎をまとめてみた ~ 第一章:コンテナ?Dockerとは?
Dockerの基礎をまとめてみた ~ 第二章:Dockerの基本操作
Dockerの基礎をまとめてみた ~ 第三章:Dockerコマンド - image編
Dockerの基礎をまとめてみた ~ 第四章:Dockerコマンド - container編

15
13
1

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