我有一个CI服务器,它运行Atlassian Stash(Git repo),Bamboo(CI)服务器在同一主机中,本地IP地址为10.1.10.141。其中一个构建任务需要docker在其专用文件夹中运行几个进程,并根据此构建过程生成一些文件。 下面是启动docker的命令。
docker run -v ~bamboo/.ssh:/.ssh -v ~urban/bin:/urban/bin -v ${HOME}/build/search:/search -v ${PWD}:/bamboo -w /bamboo urban /bin/bash -c '/urban/bin/bamboo.search-deploy.sh ${bamboo.staging_deploy_server_ip} staging'
基本上在and dir docker中,并且主机中的几个必要目录已安装到容器中,并启动了bamboo.search-deploy.sh。
bamboo.search-deploy调用同一主机中的另一个文件,并在docker容器中执行它。
curl -sL 'http://git.myhost.com/urbansea' | bash
其中包含各种运行的脚本,例如" git clone" ssh://git@git.myhost.com:7999/sea/load.git ${BUILD_LOAD}"
现在这就是一切都失败了。码头工人的外面;在主机中,我可以从存储(在同一主机中)git克隆,但如果我尝试在docker中克隆它会超时。
主机和docker容器在2个独立的接口上运行,具有以下ip地址。 Docker容器可以卷曲,ping,git克隆任何外部仓库没有问题。 ssh密钥也存在,它们可以与存储一起使用。
Host: eth0: 10.1.10.141
Docker: docker0: 172.17.42.1
我在虚拟主机中使用单独的ip创建了相同设置的完整克隆并执行了git clone并且它有效。
我怀疑这可能是一个与docker如何桥接到主机网卡有关的问题,但我对如何解决问题没有扎实的理解。
主机在ubuntu 12.10内核3.5上运行
Linux dev 3.5.0-51-generic #76-Ubuntu SMP Thu May 15 21:19:10 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
我知道docker docs声明要在3.8上运行它,但我还有其他一些与12.10相关的问题。
我还尝试在一个接口上运行docker,该接口的ip地址与主机ip的同一子网内存在,但同样的问题仍然存在。以下是我跟随的blog post链接。
答案 0 :(得分:0)
原来问题与阻止docker容器的ip地址的ip表有关。检查日志后,我看到ufw阻止了同一子网(172.17.0.0/24)中的各种IP地址,这恰好是docker的ip。通过发布:
解决了这个问题iptables -A INPUT -s 172.17.0.9/24 -j ACCEPT
每次启动时,Docker都会更新ip地址,因此ip范围比静态ip更好。