ebiです。相変わらずWindowsを使って、Docker入門の続き(前回)やっていきます。
誰かのDocker入門の助けになるように、すんなり行ってる風に書いていきますけど、実際は色々と手出しては詰まって時間食い潰してました。
httpd イメージを動かしてみる
Code School の Docker講座を覗いてみたら、作るだけで良い感じに Apache が起動してくれるイメージを使ってたので、まずはこいつを実機で動かしてみることにしました(もっと親切なイメージを使う話は後から)。
docker run する
docker run -d -p 9999:80 httpd
-d
はデタッチドモードでコンテナを起動する、とのこと。詳しい説明はhelpコマンドやここらへんで。
-p 9999:80
はポート番号の指定です。
- 左側がDockerホスト側のポート番号です。好きな番号を指定すればオッケーです。この後で使います。
- 右側がコンテナ側のポート番号です。一般的なWebサーバなので80番にします。
docker ps
を実行してみると、今起動したコンテナの情報が足されているはずです。
アクセスしてみる
それでは、実際に起動した Apache が動かしてくれるWebページを見に行きましょう。
ブラウザを起動してURLに
localhost:9999
と。
……あれ?
アクセスできない。なんで??
ここで思い出してほしいんですけど、Windows の場合は Docker を動かしているのは Windows ではなくDocker Machine で作った VirtualBox上のDockerホスト なのです。
つまり、localhost じゃなくて Dockerホストにアクセスしに行かないといけないんですね。
そこで
docker-machine ls
で出てくるURLを再確認します。
ポート番号をさっき指定したやつに付け替えて、
192.168.99.100:9999/
でリベンジ
やりました。
次の課題
Webサーバが立ち上がったのは喜ばしいことですが、開発はどうやって進めればいいのでしょうか……。
とりあえず考えるのはこの二つです。
- Webサーバを動かしているコンテナにSSH的なので繋ぎたい
- コンテナとWindows本体の共有フォルダを作りたい
前者は docker exec なるコマンドで手軽にできるっぽいです。
docker ps
をすると出てくる、コンテナの CONTAINER ID か NAMES を dockerコマンドの対象となるコンテナを指定する時に使います。
docker exec -it NAME /bin/bash
NAME
はコンテナを指定する文字に置き換えてください。
あとは普通にSSH繋いでいる時みたいな感じで動かせます。
後者は docker run
に -v オプションを付ければいいだけ、と言えばそうなのですが……。Windows側のディレクトリ指定するのにちょっと苦労しました。
docker run -v /c/Users/ebi/Desktop/testdir:/usr/local/apache2/htdocs -p 8888:80 -d httpd
これで成功しました。Windows側で index.html を作ってみて、反映されているかどうか確かめてみてください。
-p オプションでポート番号書いた時のように、-v オプションにWindows側のディレクトリ:Dockerコンテナ側のディレクトリ
を指定します。
基本中の基本となるDockerコマンドを使って、ローカルでWebサーバを動かすことに成功しました。ちょっと次は別の方法も試してみます。
Kitematic を使ってみる
Kitematic は Docker コンテナの立ち上げや管理をGUIで行うことができるツールです。
実際の画面はこんな感じです。多分最初に開いた時には、イメージ一覧とかが表示されるはずです。
使いたいイメージをGUI上で検索して、ポチっと docker run できちゃうのでお手軽です。
左側にはdocker ps -a
した時のようにコンテナ一覧が表示されています。 先ほど立ち上げたコンテナを選択して、Settingを確かめてみるとポート番号(Ports)や共有フォルダ(Volumes)の設定も簡単に確認・変更できます。
ただ、厄介な所があって、Volumesの設定は新規追加ができないようで(?)、基本的にはコマンドプロンプトから -v
オプション付きで docker run を試みることになりそうです。
再びHello World
Kitematic 編と言うことで、もう一度コンテナを作っていきます。 hello-world-nginx イメージを CREATE してみましょう。
Kitematic 公式のものだけあって、共有フォルダ設定も勝手にやってくれるのです。強い。
EXECって書いてあるボタン押すと docker exec できます。
Kitematic を開いて5秒でWebサーバ立ち上げが完了してしまいました……。
まとめ
Dockerを使ってローカルで使えるWebサーバを立ち上げてみました。
docker コマンドを地道に打ち込んでみたり、GUIツールのKitematicを使ってみたりしました。
ポートが繋がった、開発用の共有フォルダもできた。と言うところまで確認できたので、後はどうにでもなりそうです。
次回は満を持してDocker環境でRails開発をやってみます。
関連記事(Docker)
-
[翻訳] Dockerについてよくある勘違い(人気記事)
- 【ゆるふわDocker部】気軽にDockerを使うのもいいじゃない(人気記事)
- 【ゆるふわDocker部】任意バージョンのPostgreSQLコマンドを実行して外部DBに接続する(人気記事)
- 今の環境がDocker Containerとして動作しているかどうかをコマンドで調べる
- docker pullしたらまずvimを入れる人用のイメージ