Docker/Boot2Docker:在OS X上为docker设置HTTP/HTTPS代理

 大永8899_226 发布于 2023-01-07 08:45

简而言之:如何在Mac OS X上为Docker设置HTTP/HTTPS代理?

详细说明:

我在代理后面的Mac OS X上运行Docker(1.12).我按照安装说明安装了boot2docker.如果我从我的网络内部Docker注册表中提取,这工作正常.

但是,从docker.io中提取时出现以下错误:

machine:~ me$ docker run ubuntu echo hello world
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
2014/06/30 13:23:26 Get https://index.docker.io/v1/repositories/ubuntu/images:
dial tcp: lookup index.docker.io: no such host

注1:DOCKER_HOST,http_proxyhttps_proxy在环境中可用(运行env显示全部三个).

注意2:我在其他帖子中读到,当守护程序未正常运行时会发生此错误.但是,docker version没有表现出任何问题.此外,我可以拉动并运行从我的网络内部Docker注册表中提取的图像.

注3:我能够在Red Hat Linux(RHEL)上设置Docker .我不得不添加代理信息/etc/sysconfig/docker.我读到Ubuntu(/etc/init/docker.conf)上有一个类似的文件.但是,我在Mac OS X上找不到Docker(或boot2docker?)的文件.

2 个回答
  • 您需要修改的配置文件不会在您的OS X文件系统上,它们将附加到作为本地Docker服务器的Tiny Core Linux VM.

    要为此配置代理,请首先从Applications启动Boot2docker.一旦启动,获取终端窗口并ssh进入VM:

    bash-3.2$ boot2docker ssh
    Warning: Permanently added '[localhost]:2022' (RSA) to the list of known hosts.
                            ##        .
                      ## ## ##       ==
                   ## ## ## ##      ===
               /""""""""""""""""\___/ ===
          ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
               \______ o          __/
                 \    \        __/
                  \____\______/
     _                 _   ____     _            _
    | |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
    | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
    | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
    |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
    boot2docker: 1.0.1
                 master : cad5ece - Fri Jun 20 02:03:40 UTC 2014
    docker@boot2docker:~$
    

    现在创建/修改/ var/lib/boot2docker/profile来设置代理信息:

    docker@boot2docker:~$ sudo vi /var/lib/boot2docker/profile 
    

    Tinycore需要代理信息如下:protocol:// ip:port
    为了安全起见,我为HTTP和HTTPS设置了代理.

    export HTTP_PROXY=http://your.proxy.name:8080
    export HTTPS_PROXY=http://your.proxy.name:8080
    

    现在,您可以重新启动VM docker服务并退出VM.

    docker@boot2docker:~$ sudo /etc/init.d/docker restart
    docker@boot2docker:~$ exit
    Connection to localhost closed.
    

    您现在应该能够针对VM实例运行客户端.

    bash-3.2$ docker search ubuntu
    NAME                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    ubuntu                                           Official Ubuntu base image                      356                  
    stackbrew/ubuntu                                 Official Ubuntu base image                      39                   
    crashsystems/gitlab-docker                       A trusted, regularly updated build of GitL...
    

    此更改将通过VM重新启动来保留.你应该只需要做一次.

    为了记录,VirtualBox具有代理的全局首选项设置,但我在那里尝试的任何东西都不起作用.

    2023-01-07 08:52 回答
  • 截至最近(2015年8月)1.8版本,docker推荐的创建docker主机的方法 - 包括boot2docker VMs - 是通过其docker -machine实用程序实现的.

    从版本1.8开始,docker-machine现在通过以下调用支持在VM创建时配置代理:

    docker-machine create -d virtualbox \
        --engine-env HTTP_PROXY=http://192.37.246.181:2010 \
        --engine-env HTTPS_PROXY=http://192.37.246.181:2010 \
        --engine-env NO_PROXY=novartis.net \
        default
    

    这会导致VM已将指定的环境变量添加到初始化文件/ var/lib/boot2docker/profile中 - 无需再手动添加它们.

    2023-01-07 08:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有