docker便利ですね。
便利なのはわかってたのですが、業務でもあまりdockerを使うケースがなかったので後回しにしてしまっていました。
備忘録的にメモです。
環境
- Windowsでつかう
- Windows for dockerを使う
2つのコンテナを疎通可能にする。
dockerで構築した2つのコンテナを疎通可能にします。
AP環境とDB環境をコンテナとして分ける場合ですね。
1コンテナ1ミドル、が理想とのことなのでそれに倣います。
※当然ケースバイケースだとは思いますが。
まずネットワークを作る
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
## 作成 C:\Users\glodia> docker network create glodia_network ## 確認 C:\Users\glodia> docker network inspect glodia_network [ { "Name": "glodia_network", … "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1" } ] }, … } ] |
そのあと、ネットワークにコンテナを追加する。
1 2 3 4 5 |
## docker network connect ネットワークID コンテナID C:\Users\glodia> docker network connect glodia_network conntainer01 C:\Users\glodia> docker network connect glodia_network conntainer02 |
これでOKです。
2つのコンテナには「172.18.0.0/16」のIPアドレスが払い出されます。
Windowsのローカル環境のストレージをdokcerコンテナ内にマウントする。
開発環境として使う場合は通常必須だと思います。
(vimやemacsでLinuxOS内でゴリゴリコードを書く人なら別ですが)
ソースコードはWindowsのローカルに配置して、AtomやBracketsを使いたい人は特に。
1 2 3 |
## docker run -v #{Windows内、マウント元のディレクトリ}:#{コンテナ内、マウント先のディレクトリ} -itd --name #{コンテナ名} #{イメージ名} C:\Users\glodia> docker run -v /c/Users/user/Documents/src:/mnt/src -itd --name container01 image01 |
これでOK
全然うまく行かなかった
ネットで調べてQiitaとか技術ブログとか見たけど何度のやってもうまくマウントされず。マウントできなかった。
よくよく調べてみると、「Windows for Docker」の設定にて「Shared Drives」でCドライブを指定しなければならない、とのこと。
でもその設定画面の出し方がわからなかったが、なるほど、タスクトレイに常駐してるんですね。
ここに居た。
右クリックから「Settings」を押下して…
みつけました!これにチェックを入れれば良い。
無事、マウント完了です。
その他発生したエラー
そんなディレクトリ無いよのエラー。
1 2 3 4 5 6 |
C:\Users\glodia>docker run -v /c/Users/user/Documents/workspace:/data/workspace -itd --name container01 image01 docker: Error response from daemon: Mount denied: The source path "C:/Users/user/Documents/workspace" doesn't exist and is not known to Docker. See 'docker run --help'. |
作ればOK。
マウント先(コンテナ側)のディレクトリは無くても勝手に作ってくれるみたいです。
以上です。
またメモしたいことができたらメモします。