「実行環境がDockerコンテナ上か普通のLinuxかを判別する」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「 いちいちdockerコンテナを作るのが面倒なので普通のLinuxでさくさくデバッグ実行したいこともある。 == 環境変数ファイルを確認する == dockerコンテナではルート直下に「.dockerenv」という環境変数を格納したファイルが作られます。 このファイルの有無を調べることで実行環境を判別することができます。 <source lang="sh"> if [ -f /.dockerenv ]; then echo "…」 |
Administrator (トーク | 投稿記録) |
||
| 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ファイルの有無を調べるだけですが、WindowsやMacという場合もあると思うので「そもそも実行環境がLinuxかどうか」もあわせて調べたほうが良いと思います。
C#での例:
if (OperatingSystem.IsLinux() && File.Exists("/.dockerenv"))
{
Console.WriteLine("Running inside Docker container");
}
else
{
Console.WriteLine("Running on a regular Linux environment");
}