SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築

コンテナ仮想化ツールDockerをつかったコードによるWebアプリケーション実行環境の構築

インフラ構成管理ツールを使いこなす! コードではじめるサーバ構築 第6回


  • X ポスト
  • このエントリーをはてなブックマークに追加

Dockerコンテナを実行する

 DockerコンテナのもとになるDockerイメージができましたので、いよいよDockerコンテナを起動してみます。

コンテナの実行

 Dockerコンテナの起動は、docker runコマンドを実行します。docker runコマンドの書式は次のとおりです。

リスト17 docker runの書式
$  docker run [オプション] --name [コンテナ名] [イメージ名:タグ名]

 主なオプションは次のとおりです。

docker runコマンドの主なオプション
オプション 説明
-d バックグラウンドで実行
-i コンテナの標準入力
-p [ホストのポート番号]:[コンテナのポート番号] ホストとコンテナのポートマッピング
-v [ホストのディレクトリ]:[コンテナのディレクトリ] ホストとコンテナのディレクトリを共有

 たとえば、「httpd-container」という名前のコンテナを「apache:1.0」という名前のDockerイメージをもとにバックグラウンド起動し、ホストとコンテナの80番ポートをマッピングさせる場合は次のようになります。

リスト18 docker runの書式
$ docker run -p 80:80 -d --name httpd-container apache:1.0

 動作確認を行うには、boot2dockerに割り当てられているIPアドレスの80番ポートにブラウザでアクセスします。IPアドレスを忘れてしまった場合は、コンソールを一旦exitコマンドで終了します。そこで次のコマンドを実行し、割り当てられているIPアドレスを確認します。確認が出来たら、boot2docker sshコマンドでboopt2dockerに再度アクセスできます。

リスト19 boot2dockerのIPアドレス確認
$ boot2docker ip
192.168.59.103

 ブラウザを開き、該当のIPアドレスの80番ポートにアクセスすると、Docker上で起動しているコンテナでWebサーバが起動しているのが確認できます。

動作確認
動作確認

 docker runコマンドは、他にもたくさんのオプションがあります。詳細については以下の公式サイトを参照してください。

コンテナの確認

 Docker上で動作するコンテナを確認するときは、docker psコマンドを使います。

リスト20 docker ps
$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                N
AMES
35f7f42a2e01        apache:1.0          "/usr/sbin/httpd -D    4 minutes ago       Up 4 minutes        0.0.0.0:80->80/tcp   h
ttpd-container

 Dockerコンテナには、コンテナごとにCONTAINER IDが割り当てられます。実行例をみると、httpd-containerというコンテナ(CONTAINER ID: 35f7f42a2e01)が起動しているのが分かります。なお、docker psコマンドに-aオプションをつけると停止しているコンテナもすべて表示することができます。

コンテナの起動/停止/再起動

 Dockerコンテナの起動/停止/再起動は次のコマンドを使います。コマンドの引数にコンテナのCONTAINER IDを指定します。なお、CONTAINER IDはコンテナを一意に指定できればよいので、すべての桁を指定しなくても、先頭の3桁程度でかまいません。

リスト21 コンテナの起動/停止/再起動の書式
$ docker start [CONTAINER ID]
$ docker stop [CONTAINER ID]
$ docker restart [CONTAINER ID]

コンテナの削除

 Dockerコンテナを削除するには、docker rmコマンドを使います。docker rmコマンドの引数に削除したいコンテナのCONTAINER IDを指定します。たとえば、CONTAINER IDが123456789abcのコンテナを削除するときは次のようになります。

リスト22 docker rmiコマンドの実行例
$ docker rm 123456789abc

 Dockerは本記事で説明した以外にもたくさんのコマンドが用意されています。主なコマンドは次のとおりです。

主なDockerコマンド
コマンド 説明
attach 起動中のコンテナに接続
build Dockerfileファイルからイメージを作成
commit コンテナの状態を確定しイメージを作成
cp コンテナ内のファイルをホストにコピーする
create コンテナの生成
diff コンテナが実行されてから変更されたファイル差分を確認する
exec 指定したコンテナの中でコマンドを実行
images イメージの状態表示
load tarアーカイブ形式のファイルをイメージとして取り込む
login レジストリ(DockerHub)にログイン
logout レジストリ(DockerHub)からログアウト
logs コンテナの標準出力
ps コンテナの状態を確認
pull イメージのダウンロード
push イメージのアップロード
restart コンテナの再起動
rm コンテナの削除
rmi イメージの削除
run コンテナの実行
save イメージをtarアーカイブ形式のファイルに出力
search イメージの検索
start コンテナの開始
stop コンテナの停止
top コンテナのプロセス確認
version バージョン確認

 コマンドの詳細については、以下の公式サイトを参照してください。

おわりに

 今回の記事では、DockerをつかったWebアプリケーションの実行環境の構築手順について駆け足で紹介しました。Dockerは、システム開発の現場で多発する「こっちではうごくけど、あっちではうごかない」というインフラ環境に起因する問題を解決するための、業務アプリケーションの配置/実行基盤として注目されています。しかしながらDockerは単なる便利なツールではなく、これまではインフラエンジニアの仕事だった実行環境の構築が、業務アプリケーション開発者によってコードで出来るようになるという大きなパラダイムシフトを起こしています。そのため、システム開発の広い範囲をカバーできる知識や経験をもつエンジニアが今後増えていくと思われます。

 「でも、インフラなんてやったことが無いし……」と思われていても全く心配はありません。インフラ技術の習得もプログラミングの習得と同じです。つまり、「まずは自分で手を動かしてみる」ことに尽きると思っています。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 阿佐 志保(アサ シホ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8606 2015/06/15 13:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング