前回の記事「【Laravel】Dusk実行時のホスト名」の続編です。
前回は、Laravel新規プロジェクト作成時に構築されたコンテナの各ホスト名について、
docker-compose.yml で設定を確認し、
Javascriptで解決策の確認をしました。
今回は、Windows上で動作するDocker Desktopを使ってリアルに確認してみたいと思います。
この記事のゴール
- Laravel新規プロジェクトの各コンテナのホスト名がわかる
- Docker Desktop の便利な機能が少しわかる
これからやること
- コンテナ起動
- Docker Desktopで稼働中のコンテナ確認
- Docker Desktopで各コンテナのシェルに接続
- 各コンテナのホスト名確認
- Docker Desktopでコンテナ間の接続確認
コンテナ起動
UbuntuのCLI上でも、Docker DesktopでもどちらもでOKです。
Ubuntu CLI上で起動する場合:
./vendor/bin/sail up
Docker Desktop上で起動する場合:
1.コンテナ一覧を表示
2.コンテナのスタートボタン押下
Docker Desktopで稼働中のコンテナ確認
全てのコンテナのStatus欄が「Running」になれば起動完了です。
コンテナ名とホスト名の確認をします。
青いリンクがコンテナ名、その下のグレーの文字が、
コンテナに割り当てられたIDで、これがホスト名になっています。
Docker Desktopで各コンテナのシェルに接続
各コンテナのシェルへの接続はCLIからコマンドでも行えます。
docker exec -it [コンテナ名] --user [ユーザーID/名] bash
ここではDocker Desktop上で行います。
例えば、「laravel.test-1」のコンテナ名をクリックすると、
そのコンテナの詳細画面に移動します。
最初はコンテナのログが表示されていますが、
この画面の「Exec」タブをクリックすると、
そのコンテナにシェル接続した際のターミナルが表示されます。
各コンテナのホスト名確認
では、コマンドを実行して、ホスト名の確認をしてみましょう。
まとめると次の表のようになります。
# | サービス名 | コンテナ名 | ホスト名 | IPアドレス |
1 | laravel.test | webapp-laravel.test-1 | 3f66efb60f24 | 172.18.0.5 |
2 | selenium | webapp-selenium-1 | 62fdd03665fb | 172.18.0.2 |
3 | mariadb | webapp-mariadb-1 | 5763b98b84b8 | 172.18.0.3 |
4 | mailpit | webapp-mailpit-1 | b668c66d95ee | 172.18.0.4 |
Docker Desktopでコンテナ間の接続確認
▼1.[laravel.test] からの別コンテナへの接続確認
ネットワークアクセス系コマンドの有無を確認してから、
せっかくなので、みんな大好きmysqlコマンドで [mariadb] への
アクセスを試みてみました。
ちなみに、同一bridgeネットワーク内のコンテナは
Docker Engine によってホスト名が共有されているので、
ホスト名は[5763b98b84b8]でもいけます。
▼2.[selenium] から別コンテナへの接続確認
同様にネットワーク接続系コマンドの有無を調べ、
せっかくなので、みんな大好きcurlコマンドで [laravel.test] へのアクセスを
試みてみました。
- http://172.18.0.5/
- http://3f66efb60f24/
- http://laravel.test/
上記3URLのどれでもコンテンツ取得できています。
微妙にバイト数が異なるのは、HTML内のリンクの出力が
それぞれのホスト名で置き換わっているからです。
これらのダウンロードしたファイルは、「Exec」タブの右隣の「Files」タブで確認し、
ローカル環境にコピーを保存することができます。
Docker Desktop って便利ですね。
コメント