こんにちは。ヤスタカです。
最近『吉祥寺だけが住みたい街ですか?』(テレビ東京)というドラマを Amazon プライムで見てはまってしまい、引っ越し欲が高まっています。新しい場所で生活を始めるってなんだかウキウキしますよね。原作の漫画も好きですが、ドラマもかなり好きです。テレビ東京は孤独のグルメといい、こういう漫画をドラマにするのうまいですよね。
さて、連載第 3 回目となる今回の Docker 記事では、docker run コマンドについて もう少し深く掘り下げてみようと思います。Docker の最終ゴールは Docker file によってインフラをコードで管理できるようになること だと思うんですけど、その前提知識は各コマンドの内容を理解することから始まるので、まずは一歩一歩進んでいきましょう。
目次
前回までのおさらい
#2 の記事で、docker を使う上での基本コマンドについて ひと通り触れました。
絶対に挫折しない!オープンソースソフトウェア「Docker」入門編 #02
イメージの取得から docker の立ち上げ、プロセスの一覧表示やコンテナやイメージの削除がそれぞれどんなコマンドだったか、をまとめてあります。もし忘れてしまったという方は、もう一度 #2 の記事を読んでみてください。
今回は前回の記事でも触れた docker run コマンドのさまざまなオプションについて。これを知ることによって、Docker の立ち上げ時にいろいろな設定を指定して起動することができるのです。ここではその方法を学んでいこうと思います。
docker runコマンドのオプション一覧
docker run のオプションについてはさまざまなものがあり、その一覧はこちらにまとまっています。
http://docs.docker.jp/engine/reference/run.html
これらを一気に覚えるのは大変だと思うので、特に知っておくと後々役に立ちそうなものをいくつか見ていこうと思います。
インタラクティブな操作を可能にする -itオプション
コンテナ内でシェルを稼働させてコマンド操作をするなど インタラクティブな操作が必要な場合、run コマンドに -it オプションを指定する必要があります。
docker run -it ubuntu
これで ubuntu のイメージを起動したあとにコマンドを実行したり、ファイルを操作できるようになります。
プロセスをバックグラウンド実行する -dオプション
– it オプション指定のようなインタラクティブな操作を必要としないコンテナを実行する場合、run コマンドを実行するとコンソール画面がプロセスのログで専有されてしまうため、そのログ表示を止めるオプションがあります。
docker run -d httpd
このように -d オプションを付けて実行すると、起動をバックグラウンドで行ってくれます。そのため、コンテナ ID だけを表示してすぐにコマンドプロンプトに復帰してくれます。
コンテナのポートをホストのポートをフォワーディングする -pオプション
コンテナ側のポートとホスト側のポートを紐付けるには -p(–publish) オプションを使用します。
docker run -p 80:8080 -it イメージ名
これでブラウザ側でポートを指定しなくても、表示確認できるようになります。
ちなみに大文字で -P(–publish-all) で true を指定した場合、コンテナの全公開ポートがホスト側にポートフォワーディングされます。
コンテナ名を指定する –nameオプション
コンテナの名前を指定しないと適当な名前が付与されてしまうのですが、こちらで特定の名前を指定してあげましょう。
docker run --name コンテナ名 -it イメージ名
コンテナ側にホストのディレクトリをマウントする -vオプション
ホスト側のディレクトリをコンテナ側で利用したい場合は -v オプションをつけてコンテナ側にマウントすることで、利用することができます。
docker run -it -v /コンテナのディレクトリパス: /ホストのディレクトリパス イメージ名
コンテナ終了時に自動削除するか指定する –rmオプション
コンテナを終了しても、docker rm コマンドを実行しない限り、コンテナ自体は残っています。コンテナ終了時に自動でコンテナの削除までを実行しておきたい場合は
docker run -it --rm イメージ名
としましょう。
まとめ
前回の docker サブコマンドに続いて、今回は特に重要な run コマンドのオプションについて細かく見ていきました。
run コマンドのオプションは最初に上げたリンクのリストにあるとおり、とてもたくさんの種類がありますが、今回上げたものをまずは覚えてみてください。
他にもメモリの上限値を指定するものや MAC アドレスを指定するものなど、いろいろあり、これらの知識が次回の Dockerfile を作るうえで役立つので、どんなオプションがあって、それぞれどんなことができるのか ざっと見ておくとよいかもしれません。
次回はいよいよ Dockerfile を使って、インフラの構築を自動化できる一歩を踏み出します。やっと Infrastructure as Code の世界ですよ。
それでは!!
関連記事
絶対に挫折しない!オープンソースソフトウェア「Docker」入門編
絶対に挫折しない!オープンソースソフトウェア「Docker」入門編 #02
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。