如何为 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/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
当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
它将创建一个具有永久代理配置的虚拟机。
我尝试将我的环境变量放在客户机的 /var/lib/boot2docker/profile 文件中,然后重新启动它
export http_proxy=http://proxy:port
然后我使用
从我的主机 (Windows 7) 打开 shelldocker-machine ssh default
我无法使用
从我的环境变量中找到 'http_proxy'env
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
当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
它将创建一个具有永久代理配置的虚拟机。