「実行環境がDockerコンテナ上か普通のLinuxかを判別する」の版間の差分

提供:MonoBook
ページの作成:「 いちいちdockerコンテナを作るのが面倒なので普通のLinuxでさくさくデバッグ実行したいこともある。 == 環境変数ファイルを確認する == dockerコンテナではルート直下に「.dockerenv」という環境変数を格納したファイルが作られます。 このファイルの有無を調べることで実行環境を判別することができます。 <source lang="sh"> if [ -f /.dockerenv ]; then echo "…」
 
7行目: 7行目:
このファイルの有無を調べることで実行環境を判別することができます。
このファイルの有無を調べることで実行環境を判別することができます。


[[シェルスクリプト]]での例:
<source lang="sh">
<source lang="sh">
if [ -f /.dockerenv ]; then
if [ -f /.dockerenv ]; then
13行目: 14行目:
     echo "Running on a regular Linux environment"
     echo "Running on a regular Linux environment"
fi
fi
</source>
他の[[プログラミング言語]]でも.dockerenvファイルの有無を調べるだけですが、[[Windows]]や[[Mac]]という場合もあると思うので「そもそも実行環境が[[Linux]]かどうか」もあわせて調べたほうが良いと思います。
[[C Sharp|C#]]での例:
<source lang="csharp">
if (OperatingSystem.IsLinux() &&  File.Exists("/.dockerenv"))
{
    Console.WriteLine("Running inside Docker container");
}
else
{
    Console.WriteLine("Running on a regular Linux environment");
}
</source>
</source>


[[category: Docker]]
[[category: Docker]]

2024年9月20日 (金) 05:31時点における版


いちいちdockerコンテナを作るのが面倒なので普通のLinuxでさくさくデバッグ実行したいこともある。

環境変数ファイルを確認する

dockerコンテナではルート直下に「.dockerenv」という環境変数を格納したファイルが作られます。 このファイルの有無を調べることで実行環境を判別することができます。

シェルスクリプトでの例:

if [ -f /.dockerenv ]; then
    echo "Running inside Docker container"
else
    echo "Running on a regular Linux environment"
fi

他のプログラミング言語でも.dockerenvファイルの有無を調べるだけですが、WindowsMacという場合もあると思うので「そもそも実行環境がLinuxかどうか」もあわせて調べたほうが良いと思います。

C#での例:

if (OperatingSystem.IsLinux() &&  File.Exists("/.dockerenv"))
{
    Console.WriteLine("Running inside Docker container");
}
else
{
    Console.WriteLine("Running on a regular Linux environment");
}