[解決済み] dockerfileを使ったmkdirコマンドの操作方法
質問
dockerfileを使用したコンテナで、mkdirコマンドでディレクトリを作成することができません。
私のDockerfileファイルは、単に;
FROM php:fpm
WORKDIR /var/www/html
VOLUME ./code:/var/www/html
RUN mkdir -p /var/www/html/foo
このようにして、簡単なphp: fpmコンテナを作成しました。 で、fooというディレクトリを作成するように書きました。
docker build -t phpx .
上記のコードでビルドしてみました。
私のdocker-composeファイルでは、以下のようになります。
version: '3'
services:
web:
container_name: phpx
build : .
ports:
- "80:80"
volumes:
- ./code:/var/www/html
の後に、以下のコードを実行すると、コンテナカーネルに入りました。
docker exec -it phpx /bin/bash
が、/ var / www / html に foo というディレクトリはありません。
どこが間違ってるんだろう。 助けていただけませんか?
解決方法は?
原因は、ホストからボリュームをマウントする際に
/var/www/html
.
ステップ・バイ・ステップ
-
RUN mkdir -p /var/www/html/foo
は、コンテナのファイルシステム内に foo ディレクトリを作成します。 -
docker-compose.yml
./code:/var/www/html
の内容を非表示にします。/var/www/html
の内容の後ろにあるコンテナ・ファイルシステムで./code
をホストファイルシステム上で実行します。
そのため、実際にコンテナにexecitすると、その中身は
./code
ディレクトリを見ると、ホスト上で
/var/www/html
.
修正しました。
docker-compose.ymlからボリュームを削除するか、あるいは
foo
-ディレクトリを作成し、コンテナを起動する。
追加備考
: Dockerfileの中で、ボリュームを次のように宣言しています。
VOLUME ./code:/var/www/html
. これは機能しないので、削除した方が良いでしょう。Dockerfileでは、ホスト上のパスを指定することはできません。
引用元 ドッカー :
ホストディレクトリは、コンテナ実行時に宣言されます。ホストディレクトリ(マウントポイント)は、その性質上、ホスト依存となります。これは、画像の移植性を保つためです。なぜなら、与えられたホストディレクトリがすべてのホストで利用可能であることは保証できないからです。このため、Dockerfile 内からホストディレクトリをマウントすることはできません。 VOLUME 命令は host-dir パラメータの指定に対応していません。 . コンテナの作成時または実行時にマウントポイントを指定する必要があります。
関連
-
[解決済み] Docker: 親ディレクトリからファイルを追加する
-
(Kubernetes)k8sのdockerインストール入門
-
dockerのmountコマンドでエラーになる: mount: permission denied
-
UbuntuでDockerインストールしたgogsは、サービスを時々再起動するとアクセスできなくなります。
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
-
[解決済み] ボリュームに単一ファイルをマウントする方法
-
[解決済み】Windows 10のDockerでカレントディレクトリをボリュームとしてマウントする。
-
[解決済み】docker composeでホストディレクトリをボリュームとしてマウントする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー "入力デバイスはTTYではありません"
-
[解決済み】Docker - 0.0.0.0:4000 のバインドに失敗: ポートはすでに割り当てられています。
-
[解決済み] アルパインイメージでdockerを使ってbashをユーザrootで実行するには? su: suidでないと正常に動作しません。
-
[解決済み] Ansibleタスクのタイムアウトの最大長
-
[解決済み] Docker - コンテナが実行されていません
-
[解決済み] DockerでPillowを使用する
-
[解決済み] Dockerfileで-hオプションのように特定のホスト名を扱う方法
-
net/http: 接続待ちの間にリクエストがキャンセルされた (Client.Timeout exceeded while awaiting head)
-
docker コマンドで例外 permissions denied が発生しました。
-
DockerRegistryV2 イメージの削除