问题:是否可以从坞守护进程配置文件中设置坞容器env?
在运行容器时,我们可以使用-e标志在容器中设置特定的环境变量,例如docker run -e foo=bar。
但是是否可以配置停靠守护进程文件(如/etc/default/docker或/etc/sysconfig/docker ),那么每个停靠器容器都可以使用相同的env foo=bar而不是使用-e标志。
[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发布于 2016-01-17 05:12:58
不,目前没有这样的选择,但是,有一些选项可以实现这一点。
使用Bash函数
您可以创建一个简单的bash函数来自动设置这些环境变量。
例如,这个Bash函数将自动在foo=bar和bar=baz环境变量上设置docker run。其他的停靠命令也是按原样传递的。
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时自动加载它。
使用码头组合
有人建议为默认选项实现一个配置文件(请参阅https://github.com/docker/docker/issues/7232),但这是为了支持使用码头组成而关闭的。
看看docker撰写,看看它是否适合您的用例。Docker Compose允许您创建一个YAML文件,该文件定义了您的“项目”--应该启动的所有容器来运行您的项目,以及它们应该如何配置。在docker-come.yml文件中支持变量替换,该文件允许您在shell中设置在docker-come.yml中使用的环境变量;参见此处的该特性的文档;https://docs.docker.com/compose/compose-file/#variable-substitution
https://stackoverflow.com/questions/34835027
复制相似问题