第7回 Dockerに触れ、マルチOSを体験してみよう(後編):古賀政純の「攻めのITのためのDocker塾」(3/3 ページ)
“攻めのIT”を考える情シスリーダーが今後知っておくべき注目の技術「Docker」を基本から応用まで解説します。今回のテーマは「Webサーバ入りDockerイメージの再利用」です
Dockerコンテナの「終了」を理解する
Dockerコンテナ「c0001」のプロンプトが表示されているということは、その実行状態が続いています。ここで、Dockerコンテナ「c0001」のコマンドプロンプトから、「exit」を入力してみると、コンテナはどうなるでしょうか。実際にやってみましょう。
[root@host0001 /]# exit exit #
ホストOSのプロンプトが表示されました。Dockerコンテナ「c0001」の状態を確認してみましょう。コンテナは稼働しているのでしょうか。
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS ... NAMES b7d3670df923 centos:centos6.6 "/bin/bash" 2 days ago Exited (0) 4 seconds ago ... c0001
Dockerコンテナのプロンプトをexitで抜けた後、「docker ps -a」の出力のSTATUS列に「Exited (0)...」という表示が表れました。コンテナは終了していることが確認できました。
これはどういうことでしょう。「docker run」を実行した時を思い出してください。docker runを実行する時に、最後に/bin/bashを指定しました。Dockerでは、コンテナを起動する際に/bin/bashを指定すると、コンテナ上でユーザーが操作するためのbashが実行されます。Dockerコンテナ上のbashのコマンドラインをexitで終了すると、docker runで指定した/bin/bashが終了し、コンテナが終了する仕組みになっています。
より理解を深めるために、/bin/bashではなく、日付を表示する/bin/dateコマンドをDockerコンテナ起動時に指定してみます。ホストOSのコマンドプロンプトから、Dockerコンテナ「c0004」を以下のように起動します。
# docker run -i -t --name c0004 --hostname host0004 centos:centos6.6 /bin/date Tue Jul 28 01:21:14 UTC 2015
ではDockerコンテナ「c0004」はどうなっているのでしょう。日付を表示したコンテナは稼働し続けているのか。docker ps -aで確認してみます。
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS ... NAMES 85c24874abf3 centos:centos6.6 "/bin/date" 6 minutes ago Exited (0) 6 minutes ago ... c0004
dateコマンドによる日付を表示するDockerコンテナ「c0004」のSTATUSは、「Exited (0)...」と表示されました。つまりコンテナ「c0004」は終了しています。dateコマンドは日付を表示すると、すぐにプロセスが終了します。ここでのDockerコンテナ「c0004」は、起動時にbashプロンプトでなく、dateコマンドが指定されているため、dateコマンドが終了するとすぐDockerコンテナも終了するのです。
逆に言うと、Dockerでは、コンテナでサービスを提供し続けるためには、コマンドがすぐに終了しない仕組みを作成する必要があります。コマンドがすぐに終了しない仕組みにはさまざまな方法がありますが、簡単なものとしてはDockerコンテナで実行するコマンドをスクリプト化し、そのスクリプトの最後に「tail -f /dev/null」を付与する方法があります。
dateコマンドを実行するスクリプトを実行し、さらに、Dockerコンテナが稼働し続けるように「tail」コマンドを実行するといった複数の処理をコンテナ上で行うには、Dockerイメージ構築の自動化で利用される「Dockerfile」が有用です。Dockerのキモともいうべき、このDockerfileについては、次回で解説します。
不要になったDockerコンテナとDockerイメージを削除してみる
ホストOSで作業をしていると、Dockerコンテナが次々と作られることが分かります。今回の練習でもDockerコンテナがいくつか生成されていると思いますので、不要なDockerコンテナを削除してみましょう。
Dockerコンテナの削除は「docker rm」にコンテナ名または、コンテナIDを指定します。コンテナ名、および、コンテナIDは、ホストOSから「docker ps -a」で確認できます。「docker rm」に-fオプションを付与することで、コンテナが稼働中であっても、強制的に削除できます。
# docker ps -a CONTAINER ID IMAGE COMMAND ... STATUS ... NAMES 4e484dd65c7d date0001:latest "/usr/local/bin/date ... Up 11 hours ... c0006 866f3a883251 c66apache0002:latest "/sbin/init" ... Up 12 hours ... c0005 2d36ee3f124d c66apache0001:latest "/sbin/init" ... Up 13 hours ... c0003 # docker rm -f c0003 # docker rm -f c0005
Dockerイメージの削除は、docker rmiにDockerイメージのリポジトリ名とタグ名を組み合わせた文字列、またはイメージIDを指定します。ホストOSからDockerイメージを確認し、慎重に作業しましょう。
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE date0001 latest 09ecd6cb65f9 11 hours ago 202.6 MB c66apache0001 latest 0b578d636fb6 12 hours ago 411.2 MB c66apache0002 latest 0b578d636fb6 12 hours ago 411.2 MB centos c66docker0001 09fbf9b2e0fc 9 weeks ago 202.6 MB docker.io/centos centos6.6 8b44529354f3 3 months ago 202.6 MB docker.io/centos centos7.1.1503 f1dade627e25 3 months ago 212.1 MB # docker rmi c66apache0001 ... # docker rmi c66apache0002:latest ... # docker rmi centos:c66docker0001
……Dockerのお試し体験はいかがでしたでしょうか。Dockerは何に活用できるか、その先は見えてきましたでしょうか。
次回はもっと「実践/応用」の部分を説明していく予定です。お楽しみに。
(第8回はこちら)
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト。兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国HPからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。現在は日本HPにて、Linux、FreeBSD、Hadoopなどのサーバー基盤のプリセールスSE、文書執筆を担当。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「CentOS 7実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード
関連記事
- 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
- 第2回 chroot/Dockerを手元のWindowsで手軽に試す方法
なぜ企業がDockerに着目するのか、今後の“攻めのIT”に必要と言われているのか。今回はこれをふまえ、簡単にざっくりと体験学習してみませんか。今回は準備編として、CentOS 7.xをお手元のWindows PCで手軽に試す方法を簡単に紹介します。 - ゲームもレースもビッグデータ分析で上手くなる!?
企業の“ビッグデータ活用”への期待度は高い。しかし、現実には「ビッグデータは持っているが活用はできていない」という企業がほとんどだろう。ここでは、思いがけない方法でビッグデータ分析を活用している事例などを紹介する。 - クラウドエバンジェリスト4者対談:「エンタープライズクラウド」は、どこへ向かうのか?
エンタープライズ領域におけるクラウド利用がいよいよ本格的に普及段階に入った。その理由と背景は何か。自社は、導入をどう考えればよいか。主要ベンダーのクラウド関連エバンジェリストに、現状とその未来を分析してもらった。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.