前提
- Windows10 Pro 64bit バージョン1803
やったこと
- docker for windowsのインストール
- docker-composeを試す
詳細手順
docker for windowsのインストール
docker IDを得る
docker IDが必要になるので、無い場合は作成する。
https://store.docker.com/
今回はアクセスしたらログイン状態になってたので不要だった。(dockerHubと同じ)
docker for windowsのダウンロード
-
丁寧な注意書き
要するに「Win10 Pro 64bitじゃない人は動かないから、その場合はDockerToolboxにしてね」らしい
Get Docker Community Edition for Windows
Docker for Windows is available for free.
Requires Microsoft Windows 10 Professional or Enterprise 64-bit. For previous versions get Docker Toolbox.
インストール実行
- 注意書き
「Linuxコンテナの代わりにWindowsコンテナを使う」後で変えられるのでデフォルトのままにした
Use Windows containers instead of Linux containers (this can be changed after installation)
- Hyper-Vを有効にしてもらう
「Hyper-Vが必要なので、有効にして再起動する」旨のメッセージが出るのでその通りにしてもらう
「VirtualBoxは動かなくなる」とあるので、そこは承知する
Hyper-V and Containers features are not enabled.
Do you want to enable them for Docker to be able to work properly?
Your computer will restart automatically.
Note: VirtualBox will no longer work.
- 再起動
無事にdocker is running
インストール後の確認・プロキシ設定
-
docker search
してみたらエラーとなった。
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for > connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
- docker for windows のプロキシ設定で解決
ちゃんとポート番号まで指定する
これでdocker search
なりpull
なりps
なり、一通り動けるようになった
docker-composeを試す
docker-compose.ymlを準備する(とりあえずwordpress)
-
wordpress公式からdocker-compose.ymlを貰う
https://docs.docker.com/compose/wordpress/ -
一部を変更
-
container_name
をつけた(たぶんつけなくてもいい) - mysqlのvolumesをいじって、windows側からは
C:\docker\data
という場所をマウントするようにした(どこでもいい)
-
version: '2'
services:
db:
image: mysql:5.7
container_name: wordpress_db
volumes:
- C:\docker\data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
container_name: wordpress_app
depends_on:
- db
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
docker-compose up
-
docker-compose up
してみたらエラーが発生
ERROR: for wordpress_db Cannot create container for service db: b'Drive has not been shared'
関連しそうなissueを見つけたので、これの通りにやってみる。
https://github.com/Cyb3rWard0g/HELK/issues/79
エラーが無さそうなので、localhost:8000
にアクセス。
動いた!
あとはアカウント適当に作ってログインすればローカルのwordpressが使える。
ボリュームマウントしてるから、コンテナ停止して消してまたdocker-compose up
しても、アカウント含めデータは残ってる。
データはこのようになる。
わざわざwordpressってフォルダ作ったのに、dataをマウントしたのは単なるミスです。
感想
- powerShell上でdocker-compose.ymlを編集しようとした時に、viでサッと編集に入れないので不便だった。vimを入れる方法もあると思うが、VSCodeでymlとターミナルを両方開いた方が個人的にはよかった。
- windowsからのボリュームマウントの場合も、docker-compose.ymlの書き方に特に気にすべきことは無くて簡単。