自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Docker 容器中如何獲取環(huán)境變量

系統(tǒng) Linux
在這篇文章中,我們學習了如何從 Docker 容器中檢索所有的環(huán)境變量。我們首先討論了Linux中環(huán)境變量的重要性。然后我們了解了 docker exec 和 docker inspect 命令來檢索環(huán)境變量。

大家好,我是指北君。

Docker是一個容器化的平臺,它將一個應(yīng)用程序連同其所有的依賴關(guān)系打包。大部分情況下,這些應(yīng)用程序需要一個特定的環(huán)境來啟動。在Linux中,我們使用環(huán)境變量來滿足這一要求。這些變量決定了應(yīng)用程序的行為。

在本文中,我們將學習如何檢索在運行 Docker 容器時設(shè)置的所有環(huán)境變量。就像有多種方法向Docker容器傳遞環(huán)境變量一樣,一旦設(shè)置了這些變量,也有不同的方法來獲取這些變量。

首先讓我們了解一下環(huán)境變量的必要性。

Linux 中的環(huán)境變量

環(huán)境變量是一組動態(tài)的鍵值對,可以在整個系統(tǒng)中訪問。這些變量可以幫助系統(tǒng)定位軟件包,配置任何服務(wù)器的行為,甚至使 bash 終端的輸出更直觀。

默認情況下,主機上的環(huán)境變量不會被傳遞給 Docker 容器。原因是 Docker 容器應(yīng)該是與主機環(huán)境隔離的。因此,如果我們想在 Docker 容器中使用環(huán)境,那么我們必須明確地設(shè)置它。

現(xiàn)在讓我們來看看從 Docker 容器內(nèi)部獲取環(huán)境變量的幾種方法。

使用 docker exec 命令獲取信息

為了演示,讓我們首先運行一個 Docker 容器,并向它傳遞一些環(huán)境變量。

docker run -itd --env "my_env_var=javanorth" --name mycontainer 

在這里,我們將 my_env_var 的值 javanorth 傳遞到名為 mycontainer 的 Docker 容器中。

現(xiàn)在讓我們使用 docker exec 命令來獲取名為 my_env_var 的環(huán)境變量。

$ docker exec mycontainer /usr/bin/env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=xxxxxxxxx
my_env_var=javanorth
HOME=/root

我們正在 Docker 容器內(nèi)執(zhí)行 /usr/bin/env 工具。使用這個工具,你可以查看 Docker 容器內(nèi)設(shè)置的所有環(huán)境變量。注意,我們的 my_env_var 也出現(xiàn)在輸出中。

我們還可以使用下面的命令來實現(xiàn)類似的結(jié)果。

$ docker exec mycontainer /bin/sh -c /usr/bin/env
HOSTNAME=xxxxxxxxx
SHLVL=1
HOME=/root
my_env_var=javanorth
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/

注意,與之前的輸出相比,有更多的環(huán)境變量。這是因為這次我們是在 /bin/sh 二進制的幫助下執(zhí)行命令的。這個二進制文件隱含地設(shè)置了一些額外的環(huán)境變量。

另外,/bin/sh shell并不是所有的 Docker 鏡像都必須存在的。例如,在包含 /bin/bash shell的 centos Docker 鏡像中,我們將使用以下命令來檢索環(huán)境變量。

$ docker run -itd --env "container_type=centos" --name centos_container centos

$ docker exec centos_container bash -c /usr/bin/env
container_type=centos
HOSTNAME=xxxxxxxx
PWD=/
HOME=/root
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env

我們也可以使用 docker exec 命令來獲取單個環(huán)境變量的值。

$ docker exec mycontainer printenv my_env_var
javanorth

printenv 是另一個命令行工具,用于顯示 Linux 中的環(huán)境變量。在這里,我們將環(huán)境變量的名稱 my_env_var 作為參數(shù)傳給 printenv。這將打印出 my_env_var 的值。

這種方法的缺點是,為了檢索環(huán)境變量,Docker容器必須處于運行狀態(tài)。

使用 docker inspect 命令獲取

現(xiàn)在讓我們來看看另一種在 Docker 容器處于停止狀態(tài)時獲取環(huán)境變量的方法。我們將使用docker inspect 命令來實現(xiàn)這一目的。

docker inspect 提供所有 Docker 資源的詳細信息。輸出是JSON格式的。因此,我們可以根據(jù)我們的要求過濾輸出。

讓我們操作 docker inspect 命令,只顯示容器的環(huán)境變量。

$ docker inspect mycontainer --format "{{.Config.Env}}"
[my_env_var=javanorth PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]

在這里,我們使用-format選項過濾了 docker inspect 輸出中的環(huán)境變量。同樣,輸出中出現(xiàn)了my_env_var。

與docker exec不同的是,docker inspect命令對停止和運行的容器都有效。

總結(jié)

在這篇文章中,我們學習了如何從 Docker 容器中檢索所有的環(huán)境變量。我們首先討論了Linux中環(huán)境變量的重要性。然后我們了解了 docker exec 和 docker inspect 命令來檢索環(huán)境變量。

docker exec方法有一些限制,而docker inspect命令可以在所有情況下運行。

責任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2020-08-05 09:48:20

Docker容器工具

2023-12-12 13:22:00

LinuxDocker容器

2022-10-14 13:33:35

2021-06-18 08:43:20

環(huán)境變量Linux

2010-01-18 14:47:42

VB.NET獲取環(huán)境變

2009-06-29 15:06:23

環(huán)境變量配置Java

2010-03-26 12:50:02

CentOS系統(tǒng)

2020-08-17 07:38:47

Linux系統(tǒng)

2011-06-14 09:21:55

Linux Qt 環(huán)境變量

2019-05-30 10:20:10

Linux環(huán)境變量命令

2021-03-04 23:11:59

環(huán)境變量Python

2010-10-11 09:41:23

MySQL環(huán)境變量

2012-09-18 01:22:33

Java環(huán)境變量Classpath

2023-11-01 13:40:25

GolangGo

2021-02-15 15:52:27

Linux環(huán)境變量命令

2011-08-22 15:06:19

linux環(huán)境變量

2021-11-18 15:54:17

FreeDOSLinux

2009-12-25 09:44:59

redhatPATH設(shè)置環(huán)境變量

2017-03-07 19:30:54

Windows 7Windowsjava

2009-07-07 12:48:29

JDK環(huán)境變量設(shè)置
點贊
收藏

51CTO技術(shù)棧公眾號