docker config 相对于为容器设置环境变量有什么好处?
What are the benefits of docker config over setting environment variables for containers?
Docker 为容器配置和设置环境变量似乎可以实现相同的目标。
特别是考虑到要设置的环境变量可以从文件中获取时 (env_file)。
docker config 相对于为容器设置环境变量有什么好处?
有很多,但主要是选择的问题。这里有一些好处:
- Docker 配置是不可变的,而环境变量不是(尽管这可能既是优点也是缺点)
- Docker 配置可以使用
docker config
命令轻松管理,而环境变量不是
- 环境变量可能在您的容器中发生冲突:您可以使用环境变量
MONGODB_HOST=mongodb://foo:bar@my-mongo:27017
指向 Mongo 数据库,但您在应用程序中使用的库也将使用此变量 但是 需要一个简单的主机名,例如my-mongo
并在运行时抛出异常
- 配置文件可能具有有限的读取权限(即只有应用用户可以读取它),其中环境变量可能会泄漏给 sub-process 或任何访问您的容器的人
- 为了容器中的可读性或管理,配置文件可能会分成几个部分,环境变量不能
- 在检查您的有效容器配置是什么时(即在您的容器中 运行 一个 shell 并环顾四周),使用配置文件比显示一堆可能不相关的环境变量要容易得多(
cat myconfig
VS. env
)
- 总而言之,配置文件比环境变量更加分区和易于管理
您可以查看 this post,它不是 Docker 具体的,但可能会提供一些见解。
Docker 为容器配置和设置环境变量似乎可以实现相同的目标。 特别是考虑到要设置的环境变量可以从文件中获取时 (env_file)。
docker config 相对于为容器设置环境变量有什么好处?
有很多,但主要是选择的问题。这里有一些好处:
- Docker 配置是不可变的,而环境变量不是(尽管这可能既是优点也是缺点)
- Docker 配置可以使用
docker config
命令轻松管理,而环境变量不是 - 环境变量可能在您的容器中发生冲突:您可以使用环境变量
MONGODB_HOST=mongodb://foo:bar@my-mongo:27017
指向 Mongo 数据库,但您在应用程序中使用的库也将使用此变量 但是 需要一个简单的主机名,例如my-mongo
并在运行时抛出异常 - 配置文件可能具有有限的读取权限(即只有应用用户可以读取它),其中环境变量可能会泄漏给 sub-process 或任何访问您的容器的人
- 为了容器中的可读性或管理,配置文件可能会分成几个部分,环境变量不能
- 在检查您的有效容器配置是什么时(即在您的容器中 运行 一个 shell 并环顾四周),使用配置文件比显示一堆可能不相关的环境变量要容易得多(
cat myconfig
VS.env
) - 总而言之,配置文件比环境变量更加分区和易于管理
您可以查看 this post,它不是 Docker 具体的,但可能会提供一些见解。