我试图将我的环境变量放在客户机上的/ var / lib / boot2docker / profile文件中,然后重新启动它
导出http_proxy = http://proxy:port
然后我使用
从我的主机(Windows 7)打开shelldocker-machine ssh default
我无法使用
从我的环境变量中找到'http_proxy'的env
答案 0 :(得分:2)
启动前docker
守护程序源/var/lib/boot2docker/profile
。 HTTP_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
它将创建一个具有永久代理配置的虚拟机。