以下是如何修改正在运行的容器以更新其环境变量的方法。假设您在Linux上运行。我使用Docker 19.03.8进行了测试。
实时还原
首先,请确保您的Docker守护程序设置为在关闭时保留容器运行状态。编辑您的/etc/docker/daemon.json
文件,并将"live-restore": true
添加为顶级键。
sudo vim /etc/docker/daemon.json
我的文件看起来像这样:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"live-restore": true
}
本内容摘自此处。
获取容器ID
保存要编辑的容器的ID以便更轻松地访问文件。
export CONTAINER_ID=`docker inspect --format="{{.Id}}" <YOUR CONTAINER NAME>`
编辑容器配置
编辑配置文件,前往“Env”部分并添加您的密钥。
sudo vim /var/lib/docker/containers/$CONTAINER_ID/config.v2.json
我的文件看起来像这样:
...,"Env":["TEST=1",...
停止和启动Docker
我发现重新启动Docker不起作用,我必须使用两个单独的命令停止然后启动Docker。
sudo systemctl stop docker
sudo systemctl start docker
由于live-restore
功能,您的容器应该保持运行状态。
验证是否生效
docker exec <YOUR CONTAINER NAME> bash -c 'echo $TEST'
这里单引号很重要。
您还可以验证容器的正常运行时间是否发生了变化:
docker ps
docker update
),然后重新启动容器来实现。 - cpuguy83