Dockerを使ってみる
前回、CoreOSをインストールしたので、とりあえず、Dockerを使ってみます。
イメージの取得
ここでは、Ubuntu14.04のイメージを取得します。
core@localhost ~ $ docker pull ubuntu:14.04
取得したイメージは、以下のコマンドで確認できます。
core@localhost ~ $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 6cc0fc2a5ee3 4 weeks ago 187.9 MB
参考
https://hub.docker.com/_/ubuntu/
コンテナの開始
とりあえず、コンテナを開始ししてみます。
core@localhost ~ $ docker run ubuntu:14.04 /bin/echo 'Hello World!' Hello World!
このコマンドでは、以下のことが行われました。
- イメージからコンテナが作成され、コマンドに echo 'Hello World!'が指定された。(docker create)
- コンテナ(Ubuntu14.04)が開始され、コンテナ内でコマンド(echo 'Hello World!')が実行された。(docker start)
- コンテナが終了した。(docker stop)
ここで、コンテナを参照してみましょう。
core@localhost ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4b0a702d40c2 ubuntu:14.04 "/bin/echo 'Hello Wor" 24 seconds ago Exited (0) 24 seconds ago modest_blackwell
先程実行したコンテナが終了した状態(Exited)で残っているので、削除しておきましょう。
core@localhost ~ $ docker rm 4b0a702d40c2 4b0a702d40c2 core@localhost ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
削除できました。
対話型コンテナ
今度は、対話型コンテナを作成し、コンテナが勝手に終了しないようにします。
$ docker run -t -i --name=hoge ubuntu:14.04 /bin/bash root@3e6834b9be7f:/#
コンテナが開始され、rootでログインした状態となりました。
-t と-i は対話型コンテナを作成する際のおまじないのようなものなので、必ず付けるようにして下さい。
また、--name=で名前を指定しています。名前をしておくと、dockerコマンドを実行する際にコンテナIDではなく、名前で指定できるので、扱いやすくなります。
では、ファイルを作成してみましょう。
root@2b2b4749fc71:/# touch /tmp/test.txt root@2b2b4749fc71:/# ls /tmp test.txt
ファイルが作成できました。
イメージの作成
それでは、コンテナを抜けてみましょう。
Ctrl+p Ctrl+q と入力しましょう。
※ exitで抜けると、コンテナが停止します。
root@3e6834b9be7f:/# core@localhost ~ $
コンテナを抜けました。
コンテナが実行中であることを確認しましょう。
core@localhost ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e6834b9be7f ubuntu:14.04 "/bin/bash" 7 minutes ago Up 7 minutes hoge
ステータスが実行中(Up)であることが確認できました。
それでは、コンテナを停止してみましょう。
core@localhost ~ $ docker stop hoge hoge core@localhost ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e6834b9be7f ubuntu:14.04 "/bin/bash" 10 minutes ago Exited (0) 24 seconds ago hoge
ステータスが終了(Exited)になりました。
それでは、現在の状態をイメージとして、コミットしてみましょう。
core@localhost ~ $ docker commit hoge hogehoge/hoge:test 573d208139f650db54ee35937648d1497633e3960907fadf744027cafba3efc8
それでは、作成したイメージを確認してみましょう。
core@localhost ~ $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hogehoge/hoge test 573d208139f6 23 seconds ago 187.9 MB ubuntu 14.04 6cc0fc2a5ee3 4 weeks ago 187.9 MB
作成できていることが確認できました。
コンテナへの再接続
コンテナを再開し、再開したコンテナに接続してみましょう。
core@localhost ~ $ docker start hoge hoge core@localhost ~ $ docker attach hoge root@2b2b4749fc71:/#
接続できました。
ホストOS再起動
再度、ファイルを作成してみます。
root@2b2b4749fc71:/# touch /tmp/test2.txt root@2b2b4749fc71:/# ls /tmp test.txt test2.txt
それでは、コンテナを終了し、CoreOS自体を再起動してみましょう。
root@2b2b4749fc71:/# exit core@localhost ~ $ sudo reboot now Connection to 192.168.56.101 closed by remote host. Connection to 192.168.56.101 closed.
コンテナを確認してみましょう。
core@localhost ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b2b4749fc71 ubuntu:14.04 "/bin/bash" About an hour ago Exited (0) 43 seconds ago hoge
コンテナが停止状態で残っています。
それでは、コンテナを再開し、再開したコンテナに接続し、先程作成したファイルを確認してみましょう。
core@localhost ~ $ docker start hoge hoge core@localhost ~ $ docker attach hoge root@2b2b4749fc71:/# ls /tmp test.txt test2.txt
最後に作成したファイルが残っているのが確認できました。
このように、ホストOS再起動後も、コンテナの状態は保持されています。
それでは、このコンテナを削除します、
root@2b2b4749fc71:/# exit core@localhost ~ $ docker rm hoge hoge
作成したイメージからコンテナの開始
先程作成したイメージから開始してみたいと思います。
$ docker run -t -i --name=hoge hogehoge/hoge:test /bin/bash root@3e6834b9be7f:/#
先程作成したファイルを確認してみましょう。
root@35fff3d2180d:/# ls /tmp test.txt
イメージ作成時の状態になっていることが確認できました。
それでは、このコンテナも削除しておきます。
root@2b2b4749fc71:/# exit core@localhost ~ $ docker rm hoge hoge
次回は、Dockerを使用し、Ubuntu14.04のデスクトップ環境を作成し、RDPで接続してみたいと思います。