ついに1.0がリリース! Dockerのインストールと主なコマンドの使い方:いまさら聞けないDocker入門(2)(3/3 ページ)
1.0がリリースされたDockerは「Docker Engine」となり、「Docker」は新たなWebサービス「Docker Hub」などを加えたプラットフォームの総称となった。今回はDocker Engineのインストール方法とdocker runなど主なコマンドの使い方を紹介。
Dockerコンテナーの一覧を取得する「docker ps」コマンド
Dockerコンテナーの一覧は、docker psで確認します。
$ docker ps [-a]
docker psコマンドでは実行中のコンテナーのみ表示されますが、「-a」オプションを付加すると、停止中のコンテナーも表示されます。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f66e8ee71dab ubuntu:latest /bin/bash 37 minutes ago Exit 0 ubuntu1 $
コンテナーの状態はSTATUS列で判断できます。「Up {実行時間}」の場合は実行中、Exit 「{終了コード}」の場合は停止しています。
Dockerイメージを作成する「docker commit」コマンド
Dockerコンテナーから新しいDockerイメージを作成するために、docker commitを実行します。
$ docker commit {コンテナー名}|{コンテナーID} [{ユーザー名}/]{イメージ名}
先ほどubuntu1コンテナーではnginxをインストールしたので、任意の{ユーザー名}(takipone)と{イメージ名}(nginx)としてイメージを作成してみます。
$ docker commit ubuntu1 takipone/nginx 7fed60d6cc60de39ea80d8fba729e9abbb9899af6bf5c7ebb0a4627aacd36ed4 $
再度docker imagesを実行します。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE takipone/nginx latest 7fed60d6cc60 17 minutes ago 284.1 MB ubuntu latest 99ec81b80c55 4 weeks ago 266 MB $
今度は、作成したDockerイメージ(takipone/nginx)が一覧に表示されました。
Dockerコンテナーのバックグラウンドでの実行
nginxを含むDockerイメージが作成できたので、今度はnginxをバックグラウンドで実行し、80番ポートを常時Listenするコンテナーnginx1を作成、実行してみましょう。
nginxをコマンドで実行するためにはいくつかのオプションが必要なので、それらを付加し-dオプションと-pオプションを使用してdocker runを実行します。
$ docker run -d -p 80:80 --name nginx1 takipone/nginx /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf c09a37090ce6c20641eadbe89b3080769ea58736bf7e497c253643d3dbf73a01 $
今度のコンテナーはバックグラウンドで実行中ですので、docker psコマンドの-aオプションなしでも表示されます。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c09a37090ce6 takipone/nginx:latest /usr/sbin/nginx -g d About an hour ago Up About an hour 0.0.0.0:80->80/tcp nginx1 $
試しにホストの80番ポート(nginx)にcurlコマンドでアクセスしてみます。
$ curl localhost:80 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> : (略) $
nginxのデフォルトページがレスポンスとして返ってきたことで、コンテナーでnginxが動作していることが確認できました。
Dockerコンテナーを停止する「docker stop」コマンド
バックグラウンドで実行中のDockerコンテナーは、docker stopで停止します。
$ docker stop {コンテナー名}|{コンテナーID}
nginx1コンテナーを停止してみます。
$ docker stop nginx1 nginx1 $
再度docker psを実行すると、今度はnginx1が表示されませんので、停止していることが分かります。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES $
Dockerコンテナーを削除する「docker rm」コマンド、イメージを削除する「docker rmi」コマンド
使い終わったDockerコンテナーはdocker rm、Dockerイメージはdocker rmiで削除します。
$ docker rm {コンテナー名}|{コンテナーID} $ docker rmi {イメージ名}|{イメージID}
今回使ったコンテナを削除します。
$ docker rm nginx1 nginx1 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f66e8ee71dab ubuntu:latest /bin/bash 37 minutes ago Exit 0 ubuntu1 $
次いで、作成したイメージを削除します。
$ docker rmi takipone/nginx Untagged: takipone/nginx:latest Deleted: b8d59994452bd6975f4ecbe800d746a0bc508457cae418651297c0c24dd5741a Deleted: 01754064e00386a810ebcce3fd2cca248bf089efa8af1bb3be0a1cc7413f2396 $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 99ec81b80c55 4 weeks ago 266 MB $
これで後片付けは完了です。
Dockerコンテナーを再実行する「docker start」コマンド
停止しているコンテナーは、docker startで再実行します。
$ docker start [-i] {コンテナー名}|{コンテナーID}
-iオプションは、docker runと同様にbashなどのシェルを実行する際に付加します。
先ほど停止したubuntu1コンテナで再度bashを実行する場合には、以下を実行します。
$ docker start -i ubuntu1 e56fc8025840 root@e56fc8025840:/#
次回はDockerfileファイルとdocker buildによるDockerイメージの作成
今回は、Dockerのインストールを行い、主なコマンドの使い方を紹介して、とコンテナーの起動までを試しましたが、いかがでしたでしょうか。次回は、Dockerイメージのもうひとつの作成方法、Dockerfileファイルとdocker buildコマンドを紹介します。
著者プロフィール
大瀧隆太
所属/職種:クラスメソッド株式会社 シニアソリューションアーキテクト
ビール片手に邦楽ロックバンドのライブ/フェスへの参加をこよなく愛する。業務ではAWS導入支援やAWS研修の講師に携わる一方、自動化/デプロイツールの活用でクラウドエンジニアがどこまでスケールできるのか日々試行錯誤している。
ブログURL:http://dev.classmethod.jp/
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- DockerがCloud Foundry Foundationに参加を表明
コンテナー構成情報を管理する「Docker」の開発企業が「Cloud Foundry」の開発団体に参加を表明。これはつまり……? - AWS情報アップデート:「AWS Elastic Beanstalk」でDockerコンテナの作成、管理が可能に
Amazon Web ServicesのPaaS環境「AWS Elastic Beanstalk」で、Dockerコンテナのデプロイや作成、管理ができるようになった。 - 共同プロジェクトも展開:Red Hat、Linuxコンテナ技術で米新興企業と提携
米Red Hatは、Linuxの次世代コンテナ技術に関して、米新興企業と提携を結んだと発表した。Red Hat Enterprise Linuxに「Docker」を組み合わせて、Red HatのPaaS製品の強化を目指す。 - 認定ホスト間でのシームレスな機能を保証:米レッドハット、コンテナー化されたアプリケーションの認定プログラムを発表
米レッドハットは2014年3月11日、コンテナー化されたアプリケーションの認定プログラム「Red Hat Container Certification」を発表した。既存のアプリケーション認定プログラムの延長だ。 - ユーザーは「PaaS」「IaaS」を求めているわけではない:狭義の「PaaS」を超えようとするレッドハットのOpenShift
レッドハットは、PaaS製品/サービスの「OpenShift」で、アプリケーションデリバリメカニズムの一部になる一方、IaaSとの融合を目指している。米レッドハットのOpenShift責任者に聞いた。 - DevOps時代のJavaプログラマのためのオープンクラウド入門(1):“使用”より“構築”で学ぶオープンPaaS「OpenShift」
オープンなクラウドで重要性を増すJava。DevOps時代のJavaプログラマはアプリケーション開発者(Dev)もデプロイや運用(Ops)面におけるクラウド/インフラ技術への幅広い理解が必要となる。本連載では、さまざまなオープンクラウド技術を紹介していく。初回は、オープンソースのPaaSであるOpenShiftを紹介。どんな技術を使ってPaaSが実装されているのかを理解しよう