Docker 入門ハンズオン資料
JAWS-UG CLI専門支部 #23 - ECS 入門用の資料です。
https://jawsug-cli.doorkeeper.jp/events/24371
このハンズオンの前に説明として使ったスライドも公開しました。
- Docker入門 - 基礎編 いまから始めるDocker管理
- http://www.slideshare.net/zembutsu/introduction-to-docker-management-and-operations-basic
目的
Docker の「速さ」と「効率性」を体験するために、コンテナやイメージの作成と実行、Dockerfile を使った環境の管理、簡単なウェブサーバの起動を試します。
前提知識
- Linux のコマンドラインを操作できる
- Docker についての知識は不要
ハンズオン手順
A-1. コンテナ・イメージの確認と取得
docker images
コマンドを実行し、ローカル上の Docker イメージを確認します。今回は ECS を使って環境を構築したので、初期段階からイメージが1つだけ置かれています。
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
amazon/amazon-ecs-agent latest 68c50c0e92df 2 weeks ago 8.26 MB
もし、ECS を使わずに、はじめて実行する環境では、次のように何も表示されません。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
次に docker pull
コマンドで、CentOS のイメージを取得してみます。デフォルトでは、公開レポジトリ(DockerHub)からダウンロードします。
$ docker pull centos
latest: Pulling from centos
f1b10cd84249: Pull complete
c852f6d61e65: Pull complete
7322fbe74aa5: Already exists
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:a4627c43bafc86705af2e8a5ea1f0ed34fbf27b6e7a392e5ee45dbd4736627cc
Status: Downloaded newer image for centos:latest
再び docker images
を実行すると、ローカル上に CentOS (centos:latest = CentOS 7 )のイメージがダウンロードされたことが確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest 7322fbe74aa5 2 weeks ago 172.2
amazon/amazon-ecs-agent latest 68c50c0e92df 2 weeks ago 8.26 MB
イメージを取得するとき「イメージ名:タグ」の形式を指定すると、同じイメージで名でも異なったバージョンのものを入手できます。例えば CentOS 6 のイメージを入力するには、次のようにします。
$ docker pull centos:6
この状態で「docker images」を実行すると、2つのイメージがダウンロードされていることが確認できます。レポジトリ名は「centos」で共通ですが、タグや ID が異なっていることが分かります。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 6 a005304e4e74 2 weeks ago 203.1 MB
centos latest 7322fbe74aa5 2 weeks ago 172.2 MB
amazon/amazon-ecs-agent latest 68c50c0e92df 2 weeks ago 8.26 MB
このコンテナ・イメージが誰によって作られたかを確認するには docker history <イメージID>
を実行します。次の例では、イメージは CentOS Project によって作成されたものをベースに、変更が加えられていることが分かります。
$ docker history a005304e4e74
IMAGE CREATED CREATED BY SIZE COMMENT
a005304e4e74 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
fb9cc58bde0c 2 weeks ago /bin/sh -c #(nop) ADD file:36d5dedfe60e45e7be 203.1 MB
f1b10cd84249 10 weeks ago /bin/sh -c #(nop) MAINTAINER The CentOS Proje 0 B
A-2. コンテナの起動と停止
最もシンプルな、「Hello World」と画面に表示するだけのコンテナを実行してみましょう。コンテナの起動は docker run <オプション> <イメージ名:タグ> <コマンド> <引数>
の形式です。
$ docker run centos echo "Hello World"
Hello World
これはcentos
イメージ上で、コマンド echo "hello wolrd"
を実行するという命令です。画面上に文字列を表示し、コンテナは終了します。
コンテナ内のプロセス状況を見てみましょう。次のように PID が1でコマンドが実行されていることが分かります。
$ docker run centos ps ax
PID TTY STAT TIME COMMAND
1 ? Rs 0:00 ps ax
操作環境上でどのようなコンテナが稼働しているか確認するには、docker ps
コマンドを使います。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6a33b8c0147 amazon/amazon-ecs-agent:latest "/agent" 38 minutes ago Up 38 minutes 127.0.0.1:51678->51678/tcp ecs-agent
何も引数を指定しないと「稼働中」のコンテナしか表示しません。今表示されているのは、ECS 用のエージェントであり、システムで自動起動しているものです。
終了したコンテナも含めて表示するには docker ps -a
を実行します。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6a33b8c0147 amazon/amazon-ecs-agent:latest "/agent" 38 minutes ago Up 38 minutes 127.0.0.1:51678->51678/tcp ecs-agent
c89b318326c9 centos "ps ax" 4 minutes ago Exited (0) 4 minutes ago kickass_banach
c0963adcc32e centos "echo 'hello world'" 4 minutes ago Exited (0) 4 minutes ago distracted_sammet
ターミナルでコンテナを操作することもできます。このとき -i
(標準入力)と -t
(疑似ターミナル)のオプションを指定します。今度は Ubuntu の環境を起動してみます。docker run -i -t ubuntu bash
を実行します。コンテナ起動時に、ローカルにイメージが存在しない場合、自動的に Docker Hub からイメージを取得した後、コンテナを起動します。
$ docker run -i -t ubuntu bash
root@d7d20a8e7bb7:/# cat /etc/issue
Ubuntu 14.04.2 LTS \n \l
このとき exit
を入力すると、コンテナは停止します。停止せずに元のターミナルに戻るには Ctrl + P + Q
キーを押します(この作業を、コンテナからデタッチする、と呼びます)。
ここまではコンテナは実行して終了するか、直接コンテナを操作してきました。画面に何も表示させず、バックグラウンドでデーモンとして動作させる -d
オプションを使うこともできます。これはデタッチ・モードとしてコンテナを起動します。
例えば ping を実行してみます。
$ docker run -d ubuntu ping 127.0.0.1 -c 120
7bc2a8876520d19c08d2f71641eacaf643910ebac2cfa79870e4a7ef50dc6815
先ほどとは異なり、画面にコンテナ ID が表示されました。この ID は docker ps
で表示されるものと同じです。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7bc2a8876520 ubuntu "ping 127.0.0.1 -c 6 36 seconds ago Up 35 seconds stoic_brattain
また、このコンテナ ID は何度も使用するものなので、環境変数で指定しておきます。※重要:この例では「7bc2a8876520」ですが、ID は環境によって異なります。自分の環境の ID を次のように入力します。
$ export CONTAINER=<自分の操作しているコンテナID>
このコンテナは、しばらく起動していますが、120秒経過すると自動的にコンテナが停止します。コンテナの中で、どのような処理が行われているかは docker logs <コンテナID>
コマンドで確認できます。
$ docker logs $CONTAINER
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.196 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.129 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.101 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.098 ms
...
リアルタイムで見たい場合は docker logs -f <コンテナID>
を実行します。あるいは docker attach <PID>
を実行してコンテナにアタッチし、直接コンテナ内のターミナルから内容を確認することもできます。このとき実行中に Ctrl + C
を押すと ping は中断し、コンテナも終了します。
また、docker logs --tail
コマンドや docker logs --tai l <行数> -f
を組みあわせることもできます。
$ docker logs --tail 5 $CONTAINER
64 bytes from 127.0.0.1: icmp_seq=60 ttl=64 time=0.104 ms
--- 127.0.0.1 ping statistics ---
60 packets transmitted, 60 received, 0% packet loss, time 59000ms
rtt min/avg/max/mdev = 0.074/0.100/0.196/0.017 ms
稼働中のコンテナを停止するには docker stop
または docker kill
を使います。stop
は SIGTERM シグナルで停止しますが、stop
は SIGKILL
で停止します。
先ほどの ping コンテナがまだ稼働しているようであれば、次のように停止できます。
$ docker stop $CONTAINER
A-3. コンテナの詳細情報を確認
コンテナに関する情報は、docker inspect <コンテナID>
で確認します。自分の環境で docker ps -a
コマンド等を実行し、任意のコンテナ情報を表示します。
$ docker inspect $CONTAINER
[
{
"Id": "7bc2a8876520d19c08d2f71641eacaf643910ebac2cfa79870e4a7ef50dc6815",
"Created": "2015-07-06T03:43:46.882917122Z",
"Path": "ping",
"Args": [
"127.0.0.1",
"-c",
"120"
],
"State": {
"Running": false,
"Paused": false,
...
画面に多くの情報が表示されます。この情報は --format
コマンドを使ってフィルタすることもできます。
$ docker inspect --format='{{.Config.Cmd}}' $CONTAINER
‘{[ping 127.0.0.1 -c 120]}
また表示形式の切り替えも可能です。JSON 形式で表示するには、次のように指定します。
$ docker inspect --format='{{json .Config.Cmd}}' $CONTAINER
["ping","127.0.0.1","-c","120"]
A-5. 不要なコンテナの削除
Docker コンテナを停止しても、コンテナ内での処理結果(ログ)やファイル差分などの情報はデータとして残り続けます。特に使わない場合は docker rm
コマンドで停止します。次のコマンドは、停止した(コンテナの status が exited のもの)全てのコンテナをフィルタし、対象を削除するものです。
$ docker rm $(docker ps -aq --filter='status=exited')
ea13ae07f702
7bc2a8876520
d7d20a8e7bb7
c89b318326c9
この状態で docker ps -a
コマンドを実行すると、停止したコンテナは全て削除されています。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6a33b8c0147 amazon/amazon-ecs-agent:latest "/agent" 38 minutes ago Up 52 minutes 127.0.0.1:51678->51678/tcp ecs-agent
A-6. イメージの内容確定(コミット)や変更差分
コンテナは起動し直すと、内容が削除されることを確認しましょう。ubuntu イメージ上で /hello.txt
を作成し、exit
でコンテナを終了します。
$ docker run -i -t ubuntu bash
root@8a8828e2bdfa:/# echo "hello world" > /hello.txt
root@8a8828e2bdfa:/# ls -al /hello.txt
-rw-r--r-- 1 root root 12 Jul 6 04:06 /hello.txt
root@8a8828e2bdfa:/# exit
再び ubuntu
イメージを起動しても、先ほどの内容は記録されていません。
$ docker run -i -t ubuntu bash
root@eb0942edc229:/# ls -l /hello.txt
ls: cannot access /hello.txt: No such file or directory
もう一度、/hello.txt
を作成し、コンテナを停止してみましょう。
$ docker run -i -t ubuntu bash
root@728c30a9d97d:/# echo "hello world" > /hello.txt
root@728c30a9d97d:/# ls -al /hello.txt
-rw-r--r-- 1 root root 12 Jul 6 04:32 /hello.txt
root@y:/# exit
コンソールに戻ってきたあとは、docker ps -l
を実行し、最後に実行したコンテナIDを確認します。
zem@ubuntu:~$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
728c30a9d97d ubuntu "bash" About a minute ago Exited (0) 6 seconds ago pensive_goldstine
それから docker diff <コンテナID>
を実行すると、どのような変更が加わったかが分かります。
zem@ubuntu:~$ docker diff <コンテナID>
A /hello.txt
C /root
A /root/.bash_history
そして、内容を確定するには docker commit <コンテナID> <レポジトリ名:タグ>
の形式で指定します。以下は実行例です。<ユーザ名>
の箇所は、任意のものに置き換えます。ここではecsdocker/myapp:1.0
としていますが、任意のレポジトリ名:タグを利用できます。
$ docker commit $CONTAINER ecsdocker/myapp:1.0
1b07ddefe341abdae8f497a4dea24b2fef46a2a32621a0998fb0e7e8c2fbf666
コミットしたイメージは、docker images
コマンドで確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ecsdocker/myapp 1.0 1b07ddefe341 17 seconds ago 188.3 MB
作成された IMAGE ID
は環境変数に入れます。
$ export IMAGEID=<作成したイメージの IMAGE ID>
この作成したコンテナを使えば、先ほどの /hello.txt
を確認できます。
$ docker run ecsdocker/myapp:1.0 cat /hello.txt
hello world
また、docker history
コマンドで、これが centos をベースとしたイメージであることも分かります。
$ docker history $IMEGEID
IMAGE CREATED CREATED BY SIZE COMMENT
1b07ddefe341 2 minutes ago bash 66 B
6d4946999d4f 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
9fd3c8c9af32 3 weeks ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
435050075b3f 3 weeks ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic 194.5 kB
428b411c28f0 3 weeks ago /bin/sh -c #(nop) ADD file:b3447f4503091bb6bb 188.1 MB
A-7. Dockerfile で wget・ping のコンテナを構築
Dockerfile
は、どのような Docker イメージを構築するかを指示する設定ファイルです。都度 docker イメージを作成して commit するのは大変ですが、Dockerfile であれば、迅速・手軽に環境を構築します。
まず、作業用のディレクトリを作成し、移動します。基本的に、1つのディレクトリの中に、1つの Dockerfile を置きます。
$ mkdir dev
$ cd dev
ここでは Ubuntu で wget
を実行する、シンプルなコンテナを作成します。テキストエディタを開き、Dockerfile
という名前で次の内容を保存します。
FROM ubuntu:14.04
RUN apt-get install -y wget
CMD /usr/bin/wget
FROM
は、Docker イメージ構築時に元となるイメージ名やタグを指定します。
RUN
はコンテナの中で実行するコマンドを記述します。ただし、このコマンドを使ってデーモンを起動することはできません。
CMD
はコンテナ内で PID 1 として実行されるコマンドを指定します。
次に docker build
コマンドを使って構築します。「<名前>/wget」というイメージで構築してみましょう。画面上には構築時の経緯が表示されます。もし、指示が間違っていたり、何らかのエラーがあれば画面上に表示し、処理は中断します。
$ docker build -t ecsdocker/wget .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:14.04
(省略)
Running hooks in /etc/ca-certificates/update.d....done.
---> 7e1de0cfab32
Removing intermediate container 3689bf774a1c
Successfully built 7e1de0cfab32
この構築されたイメージを使って、コンテナを起動します。特に何も無ければ、自動的にコンテナ内の wget が実行され、その結果が表示されます。
$ docker run -ti ecsdocker/wget
wget: missing URL
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.
ここでは CMD
を使いましたが、似たようなものに ENTRYPOINT
があります。これは、予めパラメータを決めておくことができます。もし、コンテナ起動時に何らかのオプションがあれば、CMD
同様にコマンドを実行しますが、何も引数が無ければ ENTRYPOINT
で指定したものを実行します。
例として、ping を実行するコンテナを作成します。Dockerfile は次の通りです。
FROM ubuntu:14.04
ENTRYPOINT ["ping", "-c", "60"]
docker build
でイメージを作成します。
docker build -t ecsdocker/ping .
あとは docker run
でコンテナを実行します。引数は 127.0.0.1
のみ指定すると、先ほど ENTRYPOINT
に記述した -c 60
オプションが自動適用されます。
$ docker run ecsdocker/ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.067 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.102 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.108 ms
もちろん、-c 10
など、任意のオプションを指定することもでき、その場合はそのオプションが優先されます。
$ docker run ecsdocker/ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.092 ms
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.092/0.092/0.092/0.000 ms
なお、ENTRYPOINT
が Dockerfile
で指定されている場合でも、Docker コンテナ起動時に --entrypoint
コマンドで設定を変更できます。以下のように、ping コンテナに bash で操作できるようになります。
$ docker run -t -i --entrypoint bash ecsdocker/ping
root@cb197726e198:/#
A-8. Dockerfile で Nginx のコンテナを構築
ローカルの静的ファイルをコンテナ内に送ることもできます。Dockerfile
でADD
を使います。似たようなものに COPY
がありますが、ADD
のほうが URL や圧縮ファイルも指定できるので、より汎用的です。
まず、コンテンツを作成します。
$ mkdir contents
$ echo "hello world" > ./contents/index.html
そして、Dockerfile は次のように編集します。オフィシャルの nginx レポジトリを使ってイメージを作成し、./contents
ディレクトリの中身を、ドキュメントルート /usr/share/nginx/nginx
にコピーします。
FROM nginx
ADD ./contents /usr/share/nginx/html
次に構築します。
$ docker build -t ecsdocker/web .
次にコンテナを起動しますが、-p
オプションを使います。これは、ホスト側とコンテナ内のポート・マッピングを行うもので、-p ホスト側のポート:コンテナ内のポート
の形式で任意の指定ができます。
$ docker run -d -p 80:80 ecsdocker/web
010a5fbd22acbfab818541e3f07055b5338f9fa010ee9a26899423dd5944938c
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
010a5fbd22ac ecsdocker/web "nginx -g 'daemon of 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp, 443/tcp determined_albattani
このようにコンテナが起動したら、ホスト側の curl やブラウザ上で hello world
が表示されることが分かります。
$ curl http://127.0.0.1/
hello world
確認したら、一旦docker stop <コンテナID>
でコンテナを停止します。この例では 010a5fbd22ac
ですが、各々の環境で docker ps
を実行して確認します。
$ docker stop <コンテナID>
Dockerfile
でコンテンツをコピーしなくても -v
オプションでホスト側とコンテナ内でボリュームを共有する機能もあります。ボリューム機能を使えば、コンテンツだけでなく、ログなど動的に変わるデータをコンテナ内ではなくホスト側に保管します。
使うにはコンテナ起動時、-v ホスト側のパス:コンテナ内のパス
の形式で指定します。ホスト側のパスは、各々の環境にあわせて書き換えてください。
$ docker run -d -p 80:80 -v /home/<自分の環境のパス>/contents:/usr/share/nginx/html ecsdocker/web
21e7709d3aa9a1cd012dd5ba1343653dae49f81bbd75b1fd54e57598b2d8db13
このように指定すると、ホスト側の contents を編集すると、コンテナの応答内容も同時に変わることが分かります。あとは、色々操作して動作をみてみましょう。
zem@ubuntu:~/dev$ date > ./contents/date.txt
zem@ubuntu:~/dev$ curl http://127.0.0.1/date.txt
Mon Jul 6 00:55:49 EDT 2015
zem@ubuntu:~/dev$ rm ./contents/date.txt
zem@ubuntu:~/dev$ curl http://127.0.0.1/date.txt
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.2</center>
</body>
</html>
nginx
コンテナの詳細はこちらです。 ほかにも様々なアプリケーションやミドルウェアだけでなく、データベースも含めた幅広いイメージが Docker Hub 上に公開されています。
ハンズオン手順は以上です。お疲れさまでした。
番外編
X-1. Docker Machine を使った EC2 上の Docker 環境構築
Docker Machine を使い、Amazon EC2 上に Docker Engine をすぐに利用可能な環境を構築し、リモートでの操作、ログイン、削除を行います。
まず、Docker Machine のバイナリをダウンロード・セットアップを行います。以下は Linux (64bit) での実行例です。その他の OS 環境はダウンロード用ページを参照ください。
$ curl -L https://github.com/docker/machine/releases/download/v0.3.0/docker-machine_linux-amd64 > ./docker-machine
$ chmod +x ./docker-machine
ダウンロード後は、バージョンが表示されることを確認します。
$ docker-machine -v
docker-machine version 0.3.0 (0a251fe)
docker-machine
コマンドを使い、EC2 インスタンスを自動起動します。次のコマンドを実行すると「ec2docker」というインタンスを起動します。本来は様々なリージョンやインスタンス・タイプを選択できますが、ここではデフォルトの US-EAST リージョンで、t2.micro インスタンスを起動します。リージョン等の様々なオプションについてはドキュメントをご覧ください。
$ docker-machine create --driver=amazonec2 \
--amazonec2-access-key=<アクセス・キー> \
--amazonec2-secret-key=<シークレット・キー> \
--amazonec2-vpc-id=<VPC ID> \
ec2docker
起動までに時間がかかります。これは、EC2 インスタンスの起動後、Docker 実行環境のプロビジョニングも同時に行われるからです。
暫く待つと、次のような画面が表示されます。
Creating CA: /root/.docker/machine/certs/ca.pem
Creating client certificate: /root/.docker/machine/certs/cert.pem
Launching instance...
To see how to connect Docker to this machine, run: docker-machine env ec2docker
これで環境が利用可能になりました。リモートの Docker を操作できるように docker-machine env ec2docker
を実行します。
# docker-machine env ec2docker
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://54.152.12.116:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/ec2docker"
export DOCKER_MACHINE_NAME="ec2docker"
# Run this command to configure your shell:
# eval "$(docker-machine env ec2docker)"
画面に表示される export 行または eval "$(docker-machine env ec2docker)"
を実行します。あとは、通常通り docker
コマンドが利用できます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 0
Dirperm1 Supported: false
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-53-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 1
Total Memory: 992.5 MiB
Name: ec2docker
ID: 64Q4:ZURU:X4FL:BFPV:QWMW:NUBP:B2QB:JIYE:V4EI:PLKH:NSNT:5YVC
WARNING: No swap limit support
Labels:
provider=amazonec2
docker-machine
コマンドを使い、どの環境で、どのようなコンテナが起動しているか確認します。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
ec2docker * amazonec2 Running tcp://54.152.12.116:2376
リモートに SSH ログインしてみます。
$ docker-machine ssh ec2docker
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-53-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Mon Jul 6 02:34:02 UTC 2015
System load: 0.65 Processes: 107
Usage of /: 9.1% of 15.61GB Users logged in: 0
Memory usage: 11% IP address for eth0: 10.0.1.244
Swap usage: 0% IP address for docker0: 172.17.42.1
Graph this data and manage this system at:
https://landscape.canonical.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
*** System restart required ***
ubuntu@ec2docker:~$ uptime
02:36:37 up 5 min, 1 user, load average: 0.05, 0.27, 0.16
最後にインスタンスを削除するため、docker-machine rm
を実行します。
$ docker-machine rm ec2docker
Successfully removed ec2docker
docker-machine ls
で何も表示されていなければ、対象インスタンスは Terminate 済みです。マネジメント・コンソロール上でも、同様に停止していることが確認できます。
# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
X-2. もくもく自習用
更に Docker と連携する、Docker Machine、Docker Swarm、Docker Compose のオーケストレーションを試すこともできます。
- 【参考訳】Docker Machine 0.3.0 Deep Dive http://pocketstudio.jp/log3/2015/07/03/docker-machine-0-3-0-deep-dive/
- Docker Machine ドキュメント参考日本語訳 http://qiita.com/zembutsu/items/9d189da5d2c7708717a3
- Overview of Docker Machine https://docs.docker.com/machine/
- Docker Swam ドキュメント参考日本語訳 http://qiita.com/zembutsu/items/a1f0a89581d1d5832e2e
- Overview of Docker Swarm https://docs.docker.com/swarm/
- Overview of Docker Compose https://docs.docker.com/compose/
X-3. おまけ
$ docker run -it --rm supertest2014/nyan
※ Ctrl+C
で終了