dockerの基本的な使い方
981 views
ホストOSがwindowsで、dockerでcentOSを動かす場合。
通常、centOSはファイル名、ディレクトリ名は大文字、小文字を区別する。
しかし、docker上のcentOSでは大文字、小文字を区別しないことがある。
おかげ様で、テスト環境では動作するのに本番環境では動作しないという、メンドクサイ事象が発生した。
dockerのバックエンドがHyper-VかWSL2か。
Hyper-V上のdockerでは大文字、小文字を区別する。つまり、本来のcentOSと同じ動きをする。
しかし、バックエンドがWSL2だと大文字小文字の区別をしない。
ファイルシステムが違うから。
Hyper-Vのファイルシステムはfuse.grpcfuseとなっている。
この場合は、ファイル、ディレクトリの大文字小文字を区別する。
確認のため、以下のプログラムを実行してみる。
以下のプログラムは、最初に大文字のV1というディレクトリを作成し、
file_existsでV1と小文字のv1ディレクトリの有無を調べるもの。
<?php
mkdir("./V1", 0777);
if(file_exists("./V1")) {
echo "V1ディレクトリがあります\n";
}
else {
echo "V1ディレクトリがありません\n";
}
if(file_exists("./v1")) {
echo "v1ディレクトリがあります\n";
}
else {
echo "v1ディレクトリがありません\n";
}
結果は、以下のとおり、V1ディレクトリだけがあるという結果になる。
V1ディレクトリがあります
v1ディレクトリがありません
一方、WSL2の場合は9pというファイルシステムになっており、この場合は大文字、小文字を区別しない。
こちらもプログラムで確認すると、以下の結果が返ってきた。
V1ディレクトリがあります
v1ディレクトリがあります
やはり、dockerのバックエンドがWSL2の場合は大文字、小文字の区別をしなかった。
なお、ファイルシステムは以下のコマンドで調べられる。
df -T
Hyper-Vに戻す。
お役に立ったようでしたら、左上の★ボタンのクリックをお願い致します。
Page 11 of 16.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/