gpt4 book ai didi

Docker 群服务环境变量在容器内不可见

转载 作者:行者123 更新时间:2023-12-05 03:32:20 26 4
gpt4 key购买 nike

我正在创建一个带有环境变量的 docker 服务:

docker service create --env TEST=123 myservice

然后我验证环境变量设置为

$ docker service inspect myservice
...
ContainerSpec:
Env: TEST=123
...

但是环境变量并没有出现在 docker 容器中。特别是,在 docker 容器内运行的代码打印 os.Environ() 并且在日志中我只看到标准环境变量:

$ docker service logs myservice
[HOSTNAME=48bcddab9204 SHLVL=1 HOME=/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/app]

因此未设置环境变量“TEST”。如何设置定义此环境变量的服务?

docker版本的输出是

Client:
Version: 20.10.12
API version: 1.41
Go version: go1.17.5
Git commit: e91ed5707e
Built: Mon Dec 13 22:31:40 2021
OS/Arch: linux/amd64
Context: synology
Experimental: true

Server:
Engine:
Version: 20.10.3
API version: 1.41 (minimum version 1.12)
Go version: go1.15.13
Git commit: a3bc36f
Built: Thu Aug 19 07:11:25 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.4.3
GitCommit: ea3508454ff2268c32720eb4d2fc9816d6f75f88
runc:
Version: v1.0.0-rc93
GitCommit: 31cc25f16f5eba4d0f53e35374532873744f4b31
docker-init:
Version: 0.19.0
GitCommit: ed96d00

最佳答案

当您使用--env 时,应在环境中定义变量。如果那没有发生,我们需要一个 complete example重现。这是一个显示它有效的示例:

$ docker service create --name env-test --env TESTVAR=123 busybox tail -f /dev/null
nj9l6z57d9pviztyp9pglmv4r
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged

$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
697c1bf221b1 busybox:latest "tail -f /dev/null" 20 seconds ago Up 19 seconds env-test.1.vlrepc8mqqvx7gysh2qsymja8

$ docker exec -it env-test.1.vlrepc8mqqvx7gysh2qsymja8 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=697c1bf221b1
TERM=xterm
TESTVAR=123
HOME=/root

关于Docker 群服务环境变量在容器内不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70498247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com