【问题标题】:how to permanently set environment variable for boot2docker如何为 boot2docker 永久设置环境变量
【发布时间】:2016-06-08 10:18:35
【问题描述】:

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

导出 http_proxy=http://proxy:port

然后我使用

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

docker-machine ssh 默认

我无法通过使用从我的环境变量中找到“http_proxy”

环境

【问题讨论】:

    标签: linux shell docker boot2docker


    【解决方案1】:

    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
    

    【讨论】:

    • 这只是临时服务,在我重新启动 docker 机器后它会恢复。重启后我需要保持环境变量。
    • 由于/var/lib/boot2docker/profile 用于设置环境变量,/var/lib/boot2docker/bootsync.sh 将是添加该位脚本的更合适的位置。 (见github.com/boot2docker/boot2docker/blob/master/doc/…
    【解决方案2】:

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

    【讨论】:

    • 我没有使用 vagrant 或 docker-compose。我有一个普通的 boot2docker 虚拟机,即使重启后我也需要保留环境变量。马特的解决方案重启后不起作用
    • 因此我在 Vagrantfile 中创建 /etc/profile.d/proxy.sh 以确保该文件始终存在。
    【解决方案3】:

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

    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
    

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

    【讨论】:

    • 这些信息最终会在哪里?能够添加/删除/修改后机器创建会很高兴
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2018-09-15
    • 2021-09-23
    • 1970-01-01
    相关资源
    最近更新 更多