質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

13788閲覧

Dokcerコンテナ上のディレクトリ構成を知りたい

minyouyuu

総合スコア39

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/01/04 14:00

Windows10環境で、現在、下記URLを参考にDocker上にLaravel環境を構築中です。
これならわかるDocker上にLaravel環境構築

ファイル、ディレクトリはC:\Users\minyouyuu\Documents\IT\Docker_study\laravel_docker配下に作成しました。(ファイル、ディレクトリはURL先のサイトに書かれているものを作成しました)

添付URLを元に環境を構築後、http://127.0.0.1:8080にアクセスすると、Laravelのトップ画面が表示されるようになっています。しかし、トップ画面は表示されず、以下のエラーが表示されました。

UnexpectedValueException The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied

疑問なのは、"/var/www/html/storage/logs/laravel.log"というディレクトリのパスです。私は、ローカルPC上のC:\Users\minyouyuu\Documents\IT\Docker_study\laravel_docker上に
docker-compose.ymlなど必要なファイルを作成しました。/var/www/html/storage/logs/...といったフォルダは作成した覚えはありません。

この"/var/www/html/storage/logs/laravel.log"はどこにあるのでしょうか?添付URLのサイトを拝見しますと、ローカルに作成したディレクトリとは別に、Dokcerコンテナ上にもディレクトリが作られ、両者がリンクしているというような仕組みになっていると思っているのですが、合っていますでしょうか?

初心者の質問で申し訳ございません。ググったら出てきそうな内容ではございますが、うまく検索できなかったため、投稿いたしました。お手数をお掛けいたしますが、ご教授のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

この"/var/www/html/storage/logs/laravel.log"はどこにあるのでしょうか?添付URLのサイトを拝見しますと、ローカルに作成したディレクトリとは別に、Dokcerコンテナ上にもディレクトリが作られ、両者がリンクしているというような仕組みになっていると思っているのですが、合っていますでしょうか?

たぶんそれバインドマウントの話だから違うと思う。

Dockerの仕組みをまず理解した方が良い。
Dockerイメージの理解を目指すチュートリアル

Dockerのコンテナってのは、元になるイメージを作成すると、そのコンテナ内に含まれる全てのファイルを階層化されて管理される特別なファイルに保存してる。(Dockerのホストとなるマシン、WindowsでDocker Desktopを使っているならWSL2にファイルとしての実態がある。)

ビルド済みコンテナはこれが全て読み取り専用になっており、コンテナを起動すると、その読み取り専用の階層に加えて、そこからの変更点のみを保持する読み書きできる階層としてデータを保存するファイルが作成される。

この変更可能な層はコンテナを終了すると破棄されるので、コンテナは同じイメージからなら、起動するたびにまったく同じ環境を保てる。

あなたが「ローカルPC」と呼ぶのは「Dockerのクライアント」であり、「Dockerのホスト」と区別して考える必要がある。実態は同じPC上にあっても、論理的には異なる環境。

投稿2021/01/04 17:20

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minyouyuu

2021/01/26 14:37

ご回答ありがとうございます。URL先の記事もとても参考になりました。
guest

0

ベストアンサー

Docker とは超雑にいうとコンピューターの上でコンピューターが動く仕組みです。docker run するとイメージというコンピューターのデータ配置を固めたものをもとにコンテナーという実際に動くコンピューターのようなものが用意されます。その中にすでにイメージで用意されているディレクトリなどが展開されています。docker run --rm -it <タグ名> /bin/bash などで(bash がダメなら sh)実際にそのコンテナーの中に入っていじることができるので、探索してみると良いでしょう。/var/www/html ディレクトリも発見できると思います。

追記:
すみません、また脳直で雑な回答してしまいました。「Dokcerコンテナ上にもディレクトリが作られ、両者がリンクしているというような仕組みになっていると思っているのですが、合っていますでしょうか?」そのような認識であっています。Docker ボリュームという仕組みで docker run するときに --mount オプションで指定することが出来ます。
ボリュームの利用 | Docker ドキュメント
使用目的としては DB のデータ、ログ保存などに使われます。これらのデータはホスト側の Docker 管理下のディレクトリに置かれ、その外を参照できない仕組みとなっています。

投稿2021/01/04 14:41

編集2021/01/04 14:51
A_kirisaki

総合スコア2853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minyouyuu

2021/01/26 14:35

ご回答、ありがとうございます!コマンドやURLの共有、大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問