我正在尝试按照本教程进行 Docker 安装:
http://docs.docker.io/en/latest/installation/windows/
到目前为止,我使用手动下载的存储库运行虚拟机(按照 GitHub 链接并下载为 ZIP 文件,因为“git clone”在我的公司代理后面不起作用,即使在使用“git conf - -global http.proxy ...” - 尽管我输入了用户名和密码,但它一直要求我进行身份验证 407)。
现在我处于应该使用“docker run busybox echo hello world
”的状态(“运行Docker”部分)。
当我这样做时,我首先被告知未安装 Docker(如教程底部所示),然后,在我通过 apt-get install docker
获得它之后。 ,我得到“遇到段错误或严重错误。转储核心并中止。”
我现在能做什么?这是因为我没有使用 git clone
还是 Docker 安装有问题?我在某处读到,apt-get install docker
没有安装我想要的 Docker,而是安装了一些 GNOME 工具。我可以指定我的 apt-request 以获得正确的工具吗?
最佳答案
企业代理背后的 Windows Boot2Docker
(背景:2015 年 3 月,Windows 7,在企业代理之后)
TLDR;见 GitHub 项目 VonC/b2d
:
克隆它并:
..\env.bat
关注 env.bat.template
, profile
”中添加您想要的别名' 文件,senv.bat
然后 b2d.bat
. 然后,您将进入正确定制的
boot2docker
环境:docker search/pull
时,ssh session 能够在公司代理后面访问互联网. apt-get update/install
时通过公司代理访问互联网然后你输入一个 docker build
. 安装和第一步
如果您是工作站的管理员,则可以运行 boot2docker install on your Windows .
它目前带有:
然后,一旦安装:
c:\path\to\Boot2Docker For Windows\
在您的 %PATH%
boot2docker init
boot2docker start
boot2docker ssh
exit
退出 ssh session ,然后 boot2docker ssh
返回:您刚刚输入的命令的历史记录被保留。 boot2docker stop
如果您打开 Virtual Box GUI,并输入 DOS cmd session
boot2docker start
,您实际上可以看到 VM 启动或停止。或 stop
.主机和代理:Windows => Boot2Docker => Docker 容器
要理解的要点是您将需要管理 2 个 HOSTS :
(
%HOME%\.boot2docker\boot2docker.iso
=>.
%USERPROFILE%\VirtualBox VMs\boot2docker-vm\boot2docker-vm.vmdk
), 在 方面代理 ,这意味着:
HTTP_PROXY
, HTTPS_PROXY
和 NO_PROXY
环境变量(您可能已经拥有它们,例如 Virtual Box 可以使用它们来检测 Virtual Box 的新版本)http_proxy
, https_proxy
和 no_proxy
(注意大小写,Linux 环境中的小写)用于:docker search nginx
)。如果没有设置,下一个
docker pull
会给你一个 dial tcp: lookup index.docker.io: no such host
.这是在新文件
/var/lib/boot2docker/profile
中设置的: 是profile
,不是 .profile
. /home/docker/.ashrc
中),如果您需要执行任何其他需要互联网访问的命令(除了 docker))RUN apt-get update
将为您提供一个,例如, Could not resolve 'http.debian.net'
)。这意味着您必须添加行
ENV http_proxy http://...
首先,在任何 RUN
之前命令需要访问互联网。 不错
no_proxy
要设置的是:.company,.sock,localhost,127.0.0.1,::1,192.168.59.103
('
.company
' 是贵公司的域名,用于内部站点)数据持久化?使用文件夹共享
另一点要理解的是 boot2docker 使用 Tiny Core , a... 小型 Linux 发行版(.iso 文件只有 26 MB)。
和 Tiny Core 不提供持久性 (除了几个技术文件夹):如果你修改了你的
~/.ashrc
使用所有您喜欢的设置和别名...下一个 boot2docker stop / boot2docker start
将恢复原始 Linux 环境,您的修改消失了 .您需要确保 VirtualBox 具有 Oracle_VM_VirtualBox_Extension_Pack下载并添加在Virtual Box/File/Settings/Extension/添加
Oracle_VM_VirtualBox_Extension_Pack-4.x.yy-zzzzz.vbox-extpack
文件)。如 documented in boot2docker ,您将可以(从您的 Tiny Core ssh session )访问
/c/Users/<yourLogin>
(即 %USERPROFILE%
由 Virtual Box 共享)端口重定向?对于容器和 VirtualBox VM
最后一点要理解的是默认不导出端口 :
-p 80:80
才能将容器的 80 端口暴露给 Linux session 的 80 端口)The connection was reset
”。 对于第一点,
docker run -it --rm --name my-apache-app -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
没有 -p 80:80
将无法工作在里面。对于第二点,定义别名
doskey vbm="c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" $*
, 进而:- 如果 Virtual Box '
boot2docker-vm
' 尚未启动,使用 vbm modifyvm
- 如果 Virtual Box ' boot2docker-vm
' 已经启动,使用 vbm controlvm
通常,如果我在 boot2docker session 期间意识到无法从 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
持久化设置:复制到docker服务和docker账户
为了使用
boot2docker
容易地:%USERPROFILE%\prog\b2d
.profile
在其中(直接在 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)将所有内容放在一起以启动 boot2docker session :
b2d.bat
b2d.bat
您的 %PATH%
中的脚本这将:boot2docker
docker
复制正确的配置文件服务(重新启动)和 /home/docker
用户帐号。 那是:
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 session ,您的设置完全按照您的需要定义,只需键入:
b2d
你很高兴去:
最终结果:
docker search xxx
将工作(它将访问互联网)docker build
将工作(如果存在 ENV http_proxy
指令,它将访问互联网)%USERPROFILE%\prog\b2d
的任何 Windows 文件可以直接从 ~/b2d
修改.或者,您实际上可以使用您最喜欢的编辑器(而不是
vi
)直接从 Windows session 中编写和修改这些相同的文件(如某些 Dockerfile)而这一切,都在企业防火墙之后。
奖励:仅限 http
Tuan添加 in the comments :
Maybe my company's proxy doesn't allow https. Here's my workaround:
boot2docker ssh
,杀死 docker 进程和
export http_proxy=http://proxy.com
,然后 docker -d --insercure-registry docker.io
启动 docker 关于windows - 如何让 Docker 在企业防火墙后面的 Windows 系统上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196051/