docker

dockerの基本的な使い方

675 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。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/

ツイッター

@darkimpact0626