我在网上搜索并尝试了显而易见的方法(如下所述)来从Docker镜像中删除环境变量。
1- 我使用以下命令从修改过的Ubuntu镜像创建容器:
docker run -it --name my_container my_image
2- 我检查镜像并使用以下命令查看要删除的两个环境变量:
docker inspect my_container
这将返回:
Original Answer:
...
"Env": [
"env_variable_1=abcdef",
"env_variable_2=ghijkl",
"env_variable_3=mnopqr",
...
3 - 我进入容器并通过以下方式删除环境变量:
最初的回答:
docker exec -it my_container bash
unset env_variable_1
unset env_variable_2
4- 我检查确保指定的变量已经被删除:
最初的回答
docker inspect my_container
最初的回答
这将产生:
...
"Env": [
"env_variable_3=mnopqr",
...
5 - 然后通过以下命令将修改后的容器提交为镜像:
docker commit my_container my_new_image
6 - 并通过以下命令检查已删除的环境变量是否存在:
docker inspect my_new_image
“最初的回答”(Original Answer)
docker run -it --name my_new_container my_new_image
docker inspect my_new_container
这将产生(请鼓掌):
最初的回答:
...
"Env": [
"env_variable_1=abcdef",
"env_variable_2=ghijkl",
"env_variable_3=mnopqr",
...
AKA已删除的变量在使用
docker commit
命令时不会从修改后的容器传递到新镜像中。这里我错过了什么?
unset
是否真的删除了这些变量?我应该使用另一种方法来删除这些环境变量或使用另一种/修改后的方法将容器提交为镜像吗?PS:通过
env
确认变量在容器内存在。然后,使用unset my_variable
后,使用相同方法确认它们未激活。谢谢您的帮助!
bash
会话。然而,当我稍后连接到容器时没有使用-e
参数,变量仍然存在。 - mherzog