目標
・共有フォルダのファイルをブラウザを通して見る
dockerに慣れている人なら簡単かと思いますが、初心者には何がなんだかなので目標はまず簡単な物にしておきます。
この2つがクリア出来れば後は好きな言語を入れてwebサーバーで動作させれるハズ?
今回は1つのコンテナにwebサーバーとかを入れちゃいます。
本当はコンテナ同士を繋いでやりたいですが、docker玄人の方は温かい目で見て下さい。
疑問
ドッカーデスクトップにコマンドラインとかは付属しているのか不明なのでコマンドプロンプトで操作しています。
特に支障は今のところ無いのですが、この方法で良いのか・・・。
webサーバーを入れよう
昨日作ったcentosのイメージはyum updateをしてsudoが既に入った状態の物です。
作りたてホヤホヤの物はこの辺りも入ってない様なのでwebサーバーを入れる前に入れてあげましょう。
いきなり問題発生
なんとレポジトリにnginxが無いとの事。
起動時にレポジトリをコピーさせる方法が書いてあったのですが、今回はコンテナ内でレポジトリのファイルを作りました。
レポジトリを作ってあげるとインスコ出来ました。
多分vagrantのcentos7のイメージは最初からある程度カスタムされた物を使っていたのかな?
とりあえずnginxを入れてあげる事が出来ました。
またも問題発生。
どうもドッカーを動かす時にオプションを設定して動かさないとダメな様です。
ちょっと検索したみた所、なるほど分からん・・・。
とりあえず色々記事を見てみたところ、毎回コマンドで上記のエラーを出さない為に起動させるにはオプションをつけて起動させる必要があるみたいです。
そのオプションをdocker-composeというフォイルを作っておけばこのファイルを見て起動してね。って事が出来る様なのでdocker-composeファイルを作って起動させてみたいと思います。
とりあえずDBなどのコンテナを使っていない記述を見つけたので、それを少しづつ変えながら動作させる作戦にします。
上の記事から単独で動きそうな物を探してきました。//が記事を書いた人のコメントです。
services:
web1: // コンテナの指定
build: “/doc-file/web” // Dockerfileのパスを指定 ←分からない、イメージとは違うの?
container_name: “web-01″ // 起動させるコンテナの名前を指定 ←多分起動自体には関係ない
image: centweb-01 // 使用するイメージファイル名 ←想像通りならimageの名前を書いてあげれば良さそう
privileged: true // サービス関連のコマンドを扱うときは必須 ←分かる
command: /sbin/init // サービス関連のコマンドを扱うときは必須 ←分かる
tty: true // これがないと起動してもすぐにダウンする ←分からないけど、必要ってあるし書いておこう
ports: // 使用するポートの指定 ←分かる
– 8080:80 // (Dockerホストのポート):(コンテナ内部のポート)
という訳でbuild以外は何を指定すればいいのか大体わかったので、buildを変えてあげる必要がありそうです。
とりあえず上の記述でimageを自分で作った物にしたらやっぱりbuildのパスが無いよと言われました。
モニョモニュやった結果。
services:
web1:
build: “/web”
container_name: “laravel” ←起動、停止、起動しましたがどうやら同じ物?が動いている様子
image: centos:gahoh ←中でhistoryを見るとsudoをインストールした所まで戻っていました。
privileged: true
command: /sbin/init
tty: true
ports:
– 8080:80
・buildって一体何だ?
とりあえずcomposeファイルと同じフォルダに[web]というフォルダを作ってあげると何も言われなくなりました。
・container_name
この名前でコンテナが作られる事と停止させても同じコンテナを参照しているっぽい。
・image
昨日元々のイメージにセーブ?した物を指定できる。
イメージとコンテナの区別が出来てません。
先ほどnginxを入れた、コンテナを起動させる事が出来れば一番理解しやすかったのですが、そういう物じゃないらしい。
一応またnginxを入れた後、停止させて起動させたらnginxは入っていたので、安心しましたがしっくりこない。
共有フォルダの設定
何はともあれcomposeファイルから起動させる事が出来たので、このファイルをいじれば共有フォルダなども設定出来そうです。
そういえばターミナルをパワーシェルのターミナルでやっています。
git bashが良いらしいのですが、私の設定が悪いのかdockerの中の現在位置が表示されないのでパワーシェルで操作しております。
git bashが上手く設定出来てないだけかもしれないです。
共有フォルダの設定は、
C:\project\docker\data:/home/data
の様にホスト側を絶対パスで指定あげれば上手く動きました。
相対パスでもエラーは出なかったのですが、上手く共有出来なかったので絶対パスで指定してあげるのが確実な様です。
長くなったので、今回はこの辺で。
ちなみに私はwidnows homeなのですが、vagrantと一緒に使えたら一番良かったのですが、Hyper-Vのアリ無しでどちらかが使えなくなるので、共存は難しそうです。
proだとどうなるか分かりませんが、無難に両方同時に使いたいならMacがいいみたいです。
コメント