如何为 boot2docker 永久设置环境变量

how to permanently set environment variable for boot2docker

我尝试将我的环境变量放在客户机的 /var/lib/boot2docker/profile 文件中,然后重新启动它

export http_proxy=http://proxy:port

然后我使用

从我的主机 (Windows 7) 打开 shell

docker-machine ssh default

我无法使用

从我的环境变量中找到 'http_proxy'

env

docker 守护程序在启动前来源 /var/lib/boot2docker/profileHTTP_PROXY 变量将在 docker 守护程序环境中可用。通过 ssh 登录的用户将 不会 看到此变量。

任何 /etc/profile.d/*.sh 文件都将在登录时加载到用户配置文件中,但正如您所指出的,每次重新启动后都会重置回基本映像。

/var/lib/boot2docker/ 目录包含重新启动后保留的文件。 The bootlocal.sh will be run at the end of startup. bootsync.sh file will be run before docker.

编辑 /var/lib/boot2docker/bootsync.sh 以包含

echo 'export HTTP_PROXY="http://whatever"' > /etc/profile.d/proxy.sh

然后该变量将可用于 docker 首次启动后登录的任何内容。

○ → docker-machine restart default-docker
...
○ → docker-machine ssh default-docker
...
docker@default-docker:~$ echo $HTTP_PROXY
http://whatever

PHPdocker.io生成一个docker-compose.yml文件时,它还会放入一个环境变量部分。

tie-mysql:
  image: mysql:5.7
  container_name: tie-mysql
  environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=db_name
    - MYSQL_USER=db_user
    - MYSQL_PASSWORD=db_password

它从 Vagrantfile 开始 运行 Docker-compose:

config.vm.provision "shell", run: "always", 
      inline: "cd /home/docker/tie/phpdocker && docker-compose up -d 1>&2"

如果您不使用 docker-compose,您还可以安排将适当的文件(如@Matt 的 /etc/profile.d/proxy.sh)放入正在配置的虚拟机中(使用config.vm.provision "shell"), 而不是以后手动添加。

您可以像这样使用代理配置创建自定义虚拟机

docker-machine create -d virtualbox --engine-env HTTP_PROXY=http://10.x.y.z:4951  --engine-env HTTPS_PROXY=https://10.x.y.z:4951 testbox

它将创建一个具有永久代理配置的虚拟机。