偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

大家好,我是指北君。

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

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

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

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

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

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

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

使用 docker exec 命令獲取信息

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

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

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

現(xiàn)在讓我們使用 docker exec 命令來(lái)獲取名為 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 工具。使用這個(gè)工具,你可以查看 Docker 容器內(nèi)設(shè)置的所有環(huán)境變量。注意,我們的 my_env_var 也出現(xiàn)在輸出中。

我們還可以使用下面的命令來(lái)實(shí)現(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)境變量。這是因?yàn)檫@次我們是在 /bin/sh 二進(jìn)制的幫助下執(zhí)行命令的。這個(gè)二進(jìn)制文件隱含地設(shè)置了一些額外的環(huán)境變量。

另外,/bin/sh shell并不是所有的 Docker 鏡像都必須存在的。例如,在包含 /bin/bash shell的 centos Docker 鏡像中,我們將使用以下命令來(lái)檢索環(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 命令來(lái)獲取單個(gè)環(huán)境變量的值。

$ docker exec mycontainer printenv my_env_var
javanorth

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

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

使用 docker inspect 命令獲取

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

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

讓我們操作 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選項(xiàng)過(guò)濾了 docker inspect 輸出中的環(huán)境變量。同樣,輸出中出現(xiàn)了my_env_var。

與docker exec不同的是,docker inspect命令對(duì)停止和運(yùn)行的容器都有效。

總結(jié)

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

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

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

2020-08-05 09:48:20

Docker容器工具

2022-10-14 13:33:35

2023-12-12 13:22:00

LinuxDocker容器

2021-06-18 08:43:20

環(huán)境變量Linux

2010-01-18 14:47:42

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

2020-08-17 07:38:47

Linux系統(tǒng)

2010-03-26 12:50:02

CentOS系統(tǒng)

2009-06-29 15:06:23

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

2021-03-04 23:11:59

環(huán)境變量Python

2010-10-11 09:41:23

MySQL環(huán)境變量

2019-05-30 10:20:10

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

2012-09-18 01:22:33

Java環(huán)境變量Classpath

2011-06-14 09:21:55

Linux Qt 環(huán)境變量

2023-11-01 13:40:25

GolangGo

2021-02-15 15:52:27

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

2021-11-18 15:54:17

FreeDOSLinux

2011-08-22 15:06:19

linux環(huán)境變量

2009-12-25 09:44:59

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

2017-03-07 19:30:54

Windows 7Windowsjava

2009-07-03 16:46:07

JSP環(huán)境變量
點(diǎn)贊
收藏

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