从守护程序配置文件设置docker container env

时间:2016-01-17 04:15:37

标签: docker

问题:是否可以从docker守护程序配置文件中设置docker container env?

运行容器时,我们可以使用-e标志在容器内设置特定的环境变量,例如docker run -e foo=bar

但是可以配置docker守护程序守护程序文件,例如/etc/default/docker/etc/sysconfig/docker,然后每个docker容器可以使用相同的env foo=bar而不是-e标记。< / p>

[root@i-7guzl6d7 ~]# cat /etc/sysconfig/docker
# Docker Upstart and SysVinit configuration file

# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"

# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"

# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"

# Set container environment here?
# export FOO=BAR

1 个答案:

答案 0 :(得分:3)

不,目前没有这样的选择,但是,有一些选项可以实现这一目标。

使用Bash功能

您可以创建一个自动设置这些环境变量的简单bash function

例如;此Bash函数将自动在foo=bar上设置bar=bazdocker run个环境变量。其他docker命令按原样传递。

function docker() { case $* in run* ) shift 1; command docker run -e foo=bar -e bar=baz "$@" ;; * ) command docker "$@" ;; esac }

您可以在shell中运行以上行来加载该函数,或者将其添加到~/.bash_profile~/.bash_login~/.profile以在打开新shell时自动加载该函数

使用Docker Compose

有人建议为默认选项实施配置文件(请参阅https://github.com/docker/docker/issues/7232),但这已被关闭,支持使用Docker Compose

看看docker compose,看看它是否适合你的用例。 Docker Compose允许您创建定义“项目”的YAML文件 - 应该启动以运行项目的所有容器,以及如何配置它们。 Compose支持docker-compose.yml文件中的变量替换,它允许您在shell中设置在docker-compose.yml中使用的环境变量;请在此处查看该功能的文档; https://docs.docker.com/compose/compose-file/#variable-substitution