第二章 : Dockerの基本操作
本章では、Dockerの基本的な操作ついて記載します。
Dockerのインストール
Dockerを利用するためには、Dockerをホストマシンにインストールする必要があります。現在(2018/10時点)では、ここのページからDockerをダウンロードすることができます。
Dockerのインストール手順には公式ページや、他のサイトにも記載がありますので本記事では割愛します。
概要
第一章でも記載しましたが、Dockerの大きな機能は以下の3つです。
-
Dockerイメージを作成する機能(Build)
アプリケーションを動かすために必要な、コード/ライブラリ/ミドルウェア/OSなどをひとまとめにしたものをDockerイメージとして作成します。Dockerイメージは、コマンドラインから作成したり、Dockerfileから作成することが可能です。 -
Dockerイメージを共有する機能(Ship)
Dockerレジストリ(Docker Hub)を利用し、イメージを管理します。Docker Hubでは、イメージのアップロードやダウンロード、検索などが行えます。 -
Dockerコンテナを実行する機能(Run)
Dockerイメージをビルドし、コンテナとして実行することができます。コンテナは、開始/停止/削除が行えます。
これら機能を図示すると以下のような関連になります。
今回は、以下のような流れを簡単なコマンドと共に実行し、Dockerの基本的な部分を学んでいきたいと思います。今回はnginxのイメージを利用します。
- イメージの取得
- コンテナの作成
- コンテナの実行
- コンテナの停止
- コンテナの削除
※ここで触れない操作は以降の記事でまとめる予定です。
イメージの取得
最初に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の公式リポジトリはこちらです。
コンテナの作成
イメージを取得したので、イメージを元にコンテナを作成します。コンテナを作成するには、 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ページの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
コンテナの削除
最後に作成したコンテナを削除します。コマンドは、 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編