- Ruby / Rails関連
READ MORE
ebiです。相変わらずWindowsを使って、Docker入門の続き(前回)やっていきます。
誰かのDocker入門の助けになるように、すんなり行ってる風に書いていきますけど、実際は色々と手出しては詰まって時間食い潰してました。
Code School の Docker講座を覗いてみたら、作るだけで良い感じに Apache が起動してくれるイメージを使ってたので、まずはこいつを実機で動かしてみることにしました(もっと親切なイメージを使う話は後から)。
docker run -d -p 9999:80 httpd
-d
はデタッチドモードでコンテナを起動する、とのこと。詳しい説明はhelpコマンドやここらへんで。
-p 9999: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サーバが立ち上がったのは喜ばしいことですが、開発はどうやって進めればいいのでしょうか……。
とりあえず考えるのはこの二つです。
前者は 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 は Docker コンテナの立ち上げや管理をGUIで行うことができるツールです。
実際の画面はこんな感じです。多分最初に開いた時には、イメージ一覧とかが表示されるはずです。
使いたいイメージをGUI上で検索して、ポチっと docker run できちゃうのでお手軽です。
左側にはdocker ps -a
した時のようにコンテナ一覧が表示されています。 先ほど立ち上げたコンテナを選択して、Settingを確かめてみるとポート番号(Ports)や共有フォルダ(Volumes)の設定も簡単に確認・変更できます。
ただ、厄介な所があって、Volumesの設定は新規追加ができないようで(?)、基本的にはコマンドプロンプトから -v
オプション付きで docker run を試みることになりそうです。
Kitematic 編と言うことで、もう一度コンテナを作っていきます。 hello-world-nginx イメージを CREATE してみましょう。
Kitematic 公式のものだけあって、共有フォルダ設定も勝手にやってくれるのです。強い。
EXECって書いてあるボタン押すと docker exec できます。
Kitematic を開いて5秒でWebサーバ立ち上げが完了してしまいました……。
Dockerを使ってローカルで使えるWebサーバを立ち上げてみました。
docker コマンドを地道に打ち込んでみたり、GUIツールのKitematicを使ってみたりしました。
ポートが繋がった、開発用の共有フォルダもできた。と言うところまで確認できたので、後はどうにでもなりそうです。
次回は満を持してDocker環境でRails開発をやってみます。
[翻訳] Dockerについてよくある勘違い(人気記事)