目的
Dockerについて体系的なこと学ぶ機会がなかったため、
基本の確認と復習を兼ねてチュートリアルを実施しました。
実施内容
Docker環境構築
WSL2
参考:https://www.kagoya.jp/howto/cloud/container/wsl2_docker/
「コントロールパネル」→「プログラム」→「Windowsの機能の有効化または無効化」を選択する。
下記二つの機能を有効にしてOKをクリックする。その後、再起動する。
下記サイトの「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をダウンロードして実行する。
https://learn.microsoft.com/ja-jp/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
下記コマンドを実行してWSL2を
$ wsl --set-default-version 2
Ubuntu
※注意:このあたりの操作はうろ覚えです。怪しい場合はご自分で調査してみてください。
下記サイトからUbuntu 22.04.1 LTSをインストールする。usernameとpassを忘れないように注意。
https://apps.microsoft.com/store/detail/ubuntu-22042-lts/9PN20MSR04DW?hl=ja-jp&gl=jp&rtc=1
おまけ:Windows Terminal
WindowsターミナルをUbuntuやPowershellを簡単に使いこなせるようにしておきます。
(Windows11では標準搭載されていた気がします。)
Dockerインストール
Docker Desktop Installer.exeをダウウンロードして実行する。
https://docs.docker.com/desktop/install/windows-install/
Docker hubのアカウントを所有していればログインすることもできます。
下記コマンドを管理者で実行することで、Dockerがインストールされていることを確認できる。
$ docker -v
チュートリアル実施
公式のチュートリアルに沿ってやってみる。
コンテナ、ボリューム、DockerHub、バインドマウント、複数コンテナの場合、Docker Composeなどが学習できる。
https://docs.docker.jp/get-started/toc.html
わかりにくい点
Part2
おそらく、$ cd app
を実施して、カレントディレクトリを「C:..省略..\Docker_guide\getting-started\app」にする。
既存のDockerfileのファイル名を変更してから、app\Dockerfileを作成する。
`$ docker build -t getting-started .'を実行すると下記エラーが発生する。
Docker Desktopを起動してから上記コマンドを実行すると成功しました。
ERROR: error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/_ping": open //./pipe/docker_engine: The system cannot find the file specified.
Part4
Play with Dockerで実行するとエラーになる。
$ du -sh /var/lib/docker
で確認するとリソースが224Kバイトしかないことが原因っぽい。
仮想環境都合なので未解決。
ちなみにWindows環ではエクスプローラーから「\wsl.localhost\docker-desktop-data\data\docker\containers」などからコンテナの情報が確認できるが、ファイル等が直接入っているわけではない。
Part6
変更箇所が画面からわかりにくい。
「You have no todo items yet! 」とかを変更した方がわかりやすい。
Part7
「MySQL とアプリを動かす」へ入る前に、$ exit
コマンドでコンテナから出る。
Connected to mysql db at host mysql Listening on port 3000
は表示されていなくてもOK。
PS C:\Users\kimur\Documents\Docker_guide\getting-started\app> docker logs ae83f5c9a08540dea279b0ce025524b8090195a54a1cff3c8b916815a4b95d43
yarn install v1.22.19
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.74s.
yarn run v1.22.19
$ nodemon src/index.js
[nodemon] 2.0.20
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/index.js`
PS C:\Users\kimur\Documents\Docker_guide\getting-started\app> docker ps
次の操作でブラウザ上のToDoアプリからデータを入力すると、DBにデータが入っていることを確認できた。
Part8
docker-compose.yml内のvolumeのパスについて、コロンを境にVOLUME:CONTAINER_PASSと記載している。
https://docs.docker.jp/compose/compose-file/index.html#volumes-volume-driver
所感
バインドやデプロイ、docker-compose.ymlについて、もう少し深く知ることでLaraveやDjangoを用いた環境が構築できるようになりたい。
Windowsエクスプローラーからコンテナ内のapp.jsを閲覧するすべはないのか。。?