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

时间:2016-06-08 10:18:36

标签: linux shell docker boot2docker

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

  

导出http_proxy = http://proxy:port

然后我使用

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

docker-machine ssh default

我无法使用

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

的env

3 个答案:

答案 0 :(得分:2)

启动前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

答案 1 :(得分:1)

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") ,而不是稍后手动添加。

答案 2 :(得分:0)

您可以创建具有此类

代理配置的自定义虚拟机
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

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