連載
» 2014年06月10日 18時00分 公開

ついに1.0がリリース! Dockerのインストールと主なコマンドの使い方いまさら聞けないDocker入門(2)(3/3 ページ)

[大瀧隆太,クラスメソッド株式会社]
前のページへ 1|2|3       

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/


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。