当前位置: 首页 > 知识库问答 >
问题:

如何让Docker在企业防火墙后的Windows系统上运行?

景翰音
2023-03-14

我试图得到一个工作的Docker安装以下教程:http://docs.docker.io/en/latest/installation/windows/

到目前为止,我使用手动下载的存储库运行虚拟机(遵循GitHub链接并下载为ZIP文件,因为“git clone”在我的公司代理后面不起作用,即使在使用“git conf-globalhttp.proxy...“-它一直要求我进行认证407,尽管我输入了我的用户名和密码)。

现在我处于应该使用“docker运行busybox echo hello world”(“运行docker”部分)的状态。

当我这样做的时候,我首先被告知Docker没有安装(如教程底部所示),然后,在我用apt-get安装docker得到它之后,我得到“分段故障或遇到的关键错误”。倾倒核心并中止。"

我现在能做什么?这是因为我没有使用git clone还是Docker安装有问题?我在某个地方读到,apt-get安装docker没有安装我想要的Docker,而是一些GNOME工具。我可以指定我的apt请求来获得正确的工具吗?

共有1个答案

阎裕
2023-03-14

(背景:2015年3月,Windows 7,公司代理背后)

克隆它并:

  • 配置...\env.bat之后的env.bat.template
  • 配置文件文件中添加所需的别名,
  • 执行senv.bat然后b2d.bat.

然后,您将在一个正确定制的boot2docker环境中使用:

  • 当您键入docker search/pull时,ssh会话能够在公司代理后面访问internet

如果你是工作站的管理员,你可以在你的Windows上运行boot2docker安装。
它当前附带:

  • Boot2Docker 1.5.0(Docker 1.5.0版,Linux 3.18.5版)

然后,一旦安装:

  • 添加c:\path\to\Boot2Docker For Windows\%PATH%
  • (一次):boot2docker init
  • boot2docker start
  • boot2docker ssh
  • 键入退出退出ssh会话,并且boot2docker ssh返回:您刚刚键入的命令的历史记录被保留。
  • 如果要关闭VM,boot2docker停止

如果打开虚拟盒GUI并键入DOS cmd会话boot2docker startstop,实际上可以看到VM的启动或停止。

要了解的要点是,您需要管理2个主机:

  • 您的Windows工作站是VirtualBox运行的LinuxTiny Core的主机,以便您定义和运行容器
    %HOME%\. boot2docker\boot2docker.iso=

就代理而言,这意味着:

  • 您的Windows主机必须已设置其HTTP\u PROXYHTTPS\u PROXYNO\u PROXY环境变量(您可能已经有了这些变量,例如,虚拟盒可以使用它们来检测虚拟盒的新版本)
  • 您的微型核心主机必须为以下各项设置了http\u proxyhttps\u proxyno\u proxy(注意Linux环境中的大小写):
    • docker服务能够查询/加载图像(例如:docker search nginx
      如果未设置,下一次docker pull将为您提供拨号tcp:lookup索引。码头工人。io:没有这样的主机
      这是在新文件/var/lib/boot2docker/profile中设置的:它是profile,而不是。配置文件
    • docker帐户(在/home/docker/.ashrc中设置),如果您需要执行任何其他需要访问internet的命令(docker除外)
    • 您将创建的任何Dockerfile(或下一次运行apt get update的将为您提供一个文件,例如,无法解析“http.debian.net”
      这意味着您必须添加行ENV http\u proxyhttp://...首先,在运行任何需要访问internet的命令之前

    一个好的无需设置的代理是:

    .company,.sock,localhost,127.0.0.1,::1,192.168.59.103
    

    . company为您公司的域名,用于内部网站)

    另一点需要理解的是,boot2docker使用Tiny Core,一个...微小的Linux发行版(. iso文件只有26MB)。
    Tiny Core不提供持久性(除了几个技术文件夹):如果您修改您的<代码>~/. ashrc
    与您所有首选的设置和别名...下一个boot2docker停止/boot2docker开始将恢复原始的Linux环境,您的修改消失了。

    您需要确保VirtualBox下载了Oracle虚拟机虚拟机扩展包,并将其添加到虚拟框/File/Settings/Extension/addOracle虚拟机虚拟机扩展包-4中。x、 yy-ZZZZ。vbox extpack文件)。

    正如在boot2docker中所述,您将可以(从您的Tiny Core ssh会话)访问/c/用户/

    要了解的最后一点是,默认情况下不导出任何端口:

    • 您的容器端口在Tiny Core主机上不可见(例如,您必须使用-p 80:80才能将容器的80端口暴露给Linux会话的80端口)
    • 默认情况下,您的Tiny Cort端口不会从虚拟盒子VM导出:即使您的容器在Tiny Core中可见,您的Windows浏览器也不会看到它:http://127.0.0.1将无法工作"连接已重置"。

    对于第一点,docker run-it--rm--name my apache app-v“$PWD”:/usr/local/apache2/htdocs/httpd:2.4如果没有-p80:80,将无法工作。

    对于第二点,定义别名dos key vbm="c:\Program Files\Oracle\VirtualBox\VBoxManage.exe " $*,然后:-如果虚拟框'boot2docker-vm'尚未启动,则使用vbm修改fyvm-如果虚拟框'boot2docker-vm'已经启动,使用vbm Controlvm

    通常,如果我在boot2docker会话期间意识到无法从Windows访问端口80:

    vbm controlvm "boot2docker-vm" natpf1 "tcp-port80,tcp,,80,,80";
    vbm controlvm "boot2docker-vm" natpf1 "udp-port80,udp,,80,,80";
    

    然后,也只有这样,我才能进入http://127.0.0.1

    为了方便地使用boot2docker

    • 在Windows上创建文件夹%USERPROFILE%\prog\b2d
    • 添加一个。配置文件(直接在Windows中,在%USERPROFILE%\prog\b2d中),以及您的设置和别名

    例如(我修改了原始的/home/docker/.ashrc):

    # ~/.ashrc: Executed by SHells.
    #
    . /etc/init.d/tc-functions
    if [ -n "$DISPLAY" ]
    then
            `which editor >/dev/null` && EDITOR=editor || EDITOR=vi
    else
            EDITOR=vi
    fi
    export EDITOR
    
    # Alias definitions.
    #
    alias df='df -h'
    alias du='du -h'
    
    alias ls='ls -p'
    alias ll='ls -l'
    alias la='ls -la'
    
    alias d='dmenu_run &'
    alias ce='cd /etc/sysconfig/tcedir'
    
    export HTTP_PROXY=http://<user>:<pwd>@proxy.company:80
    export HTTPS_PROXY=http://<user>:<pwd>@proxy.company:80
    export NO_PROXY=.company,.sock,localhost,127.0.0.1,::1,192.168.59.103
    
    export http_proxy=http://<user>:<password>@proxy.company:80
    export https_proxy=http://<user>:<password>@proxy.company:80
    export no_proxy=.company,.sock,localhost,127.0.0.1,::1,192.168.59.103
    
    alias l='ls -alrt'
    alias h=history
    alias cdd='cd /c/Users/<user>/prog/b2d'
    
    ln -fs /c/Users/<user>/prog/b2d /home/docker
    

    (192.168.59.103通常是由boot2docker ip返回的ip)

    • 创建并添加b2d。在%PATH%中使用bat脚本,该脚本将:
      • 启动boot2docker
      • docker服务(已重新启动)和/home/docker用户帐户复制正确的配置文件
      • 启动交互式ssh会话

      即:

      doskey vbm="c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" $*
      boot2docker start
      boot2docker ssh sudo cp -f /c/Users/<user>/prog/b2d/.profile /var/lib/boot2docker/profile
      boot2docker ssh sudo /etc/init.d/docker restart
      boot2docker ssh cp -f /c/Users/<user>/prog/b2d/.profile .ashrc
      boot2docker ssh
      

      要进入一个新的boot2docker会话,在您的设置完全按照您的需要定义的情况下,只需键入:

      b2d
      

      你可以走了:

      • docker搜索xxx将起作用(它将访问互联网)
      • 任何docker构建都可以工作(如果有ENV http\u代理指令,它将访问互联网)
      • 可以直接从~/b2d修改%USERPROFILE%\prog\b2d中的任何Windows文件
        或者,您实际上可以直接从Windows会话中编写和修改这些文件(如某些Dockerfile),使用您喜爱的编辑器(而不是vi

      所有这些,都在公司防火墙后面。

      Tuan在评论中补充道:

      也许我公司的代理不允许https。以下是我的解决方法:

      • boot2docker-ssh
        终止docker进程并
      • 设置代理导出http\u代理=http://proxy.com,然后
      • 使用docker-d--插入注册表docker启动docker。io

 类似资料:
  • 本文向大家介绍windows 系统防火墙 添加端口号方法,包括了windows 系统防火墙 添加端口号方法的使用技巧和注意事项,需要的朋友参考一下 目前在大部分公司内使用的台式机和部分服务器都采用了Windows操作系统,而我么都知道相当一部分病毒、恶意程序、黑客都是利用扫描端口号,利用开放的端口进行入侵,此时大型企业都会将服务器的系统防火墙打开来关闭非常用端口。有些程序安装后可能会自动添加开放需

  • springboot开发的jar程序,运行在 windows server 2019 服务器上,前端链接后端 websocket 的地址类似:ws://192.168.1.2:7076/showabe/frontEndWebSocket?category=tv。只有关闭防火墙才能正常通信,如果打开防火墙即使设置放行端口号7076仍然无法通信,要如何做可以打开防火墙的情况下不影响 websocket

  • 问题内容: Ngrok(https://ngrok.com/)应该允许您通过转发将本地端口和服务公开给万维网。但是,如果我像这样打开本地计算机上的端口80: 我回来了: 我知道对http://3a4bfceb.ngrok.com的任何请求都将发送到端口80上的本地计算机,但是如果我坐在NAT /防火墙后面,这会阻止传入流量(一种非常常见的情况),该怎么办。ngrok是否会发起轮询请求来确定何时接收

  • 基本概念 netfilter Linux 内核包含一个强大的网络过滤子系统 netfilter。netfilter 子系统允许内核模块对遍历系统的每个网络数据包进行检查。这表示在任何传入、传出或转发的网络数据包到达用户空间中的组件之前,都可以通过编程方式检查、修改、丢弃或拒绝。netfilter 是 RHEL 7 计算机上构建防火墙的主要构建块。 尽管系统管理员理论上可以编写自己的内核模块以与 n

  • 我有一个服务器写在JavaServerSocket。 我有一个客户端,它位于一个公司防火墙之上,除了公共端口之外,它阻止了所有东西。 我已在SMTP端口(#25)上启动服务器。 有防火墙的用户连接到它,到目前为止一切正常。 然后服务器处理ServerSocket.accept()。据我所知,它在一个随机端口上创建一个套接字(每次端口号都不同)。因为防火墙而失败。 我的问题是-如何制作ServerS