我正在尝试按照本教程安装Docker: http://docs.docker.io/en/latest/installation/windows/
到目前为止,我使用手动下载的存储库运行VM(遵循GitHub链接并下载为ZIP文件,因为“git clone”在我的公司代理后面不起作用,即使在设置了代理“ git conf --global http.proxy ...“ - 它一直要求我进行身份验证407,虽然我输入了我的用户名和密码。)
现在我处于“docker run busybox echo hello world
”状态(“运行Docker”部分)。
当我这样做时,我首先得知没有安装Docker(如教程底部所示),然后,在我用apt-get install docker
得到它之后,我得到“Segmentation Fault或遇到严重错误。倾倒核心并中止。“
我现在能做什么?这是因为我没有使用git clone
或者Docker安装有问题吗?我在某处读到,apt-get install docker
没有安装我想要的Docker,而是安装了一些GNOME工具。我可以指定我的apt-request来获得正确的工具吗?
答案 0 :(得分:32)
(上下文:2015年3月,Windows 7,企业代理背后)
VonC/b2d
:克隆它并:
..\env.bat
,env.bat.template
profile
'中添加您想要的别名。文件senv.bat
然后b2d.bat
。然后,您处于适当自定义的boot2docker
环境中,其中包含:
docker search/pull
时,能够在公司代理后面访问互联网的ssh会话。apt-get update/install
并键入docker build
时,Dockerfiles能够访问公司代理后面的互联网。如果您是工作站的管理员,则可以运行boot2docker install on your Windows 它目前附带:
然后,一旦安装:
c:\path\to\Boot2Docker For Windows\
%PATH%
boot2docker init
boot2docker start
boot2docker ssh
exit
以退出ssh会话,并boot2docker ssh
返回:您刚输入的命令的历史记录将被保留。boot2docker stop
如果打开Virtual Box GUI,您实际上可以看到 VM启动或停止,并输入DOS cmd会话boot2docker start
或stop
。
要理解的要点是你需要管理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 ,一个......微小的Linux发行版(.iso文件只有26 MB)。
并且 Tiny Core不提供持久性(少数技术文件夹除外):如果您使用所有首选设置和别名修改~/.ashrc
,则下一个boot2docker stop / boot2docker start
将恢复一个 pristine Linux环境,修改已经消失。
您需要确保VirtualBox已下载Oracle_VM_VirtualBox_Extension_Pack并添加到虚拟框/文件/设置/扩展/添加Oracle_VM_VirtualBox_Extension_Pack-4.x.yy-zzzzz.vbox-extpack
文件中。
作为documented in boot2docker,您将有权访问(从您的Tiny Core ssh会话)到/c/Users/<yourLogin>
(即虚拟框共享%USERPROFILE%
)
要理解的最后一点是默认情况下不会导出任何端口:
-p 80:80
才能将容器的80端口暴露给Linux会话的80端口)The connection was reset
&#34;。对于第一点,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" $*
,然后:
- 如果虚拟框&#39; boot2docker-vm
&#39;尚未开始使用vbm modifyvm
- 如果虚拟框&#39; boot2docker-vm
&#39; 已经启动,使用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
:
%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)
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会话,并根据需要定义完全的设置,只需输入:
b2d
你很高兴:
docker search xxx
可以使用(它将访问互联网)docker build
都可以使用(如果有ENV http_proxy
指令,它将访问互联网)%USERPROFILE%\prog\b2d
中的任何Windows文件都可以从~/b2d
开始修改
或者您实际上可以使用您喜欢的编辑器(而不是vi
)在Windows会话中编写和修改这些相同的文件(如某些Dockerfile)所有这一切都在公司防火墙后面。
也许我公司的代理人不允许https。这是我的解决方法:
boot2docker ssh
,export http_proxy=http://proxy.com
,然后docker -d --insercure-registry docker.io