我尝试使用docker-compose.yml文件构建容器:
version: '2'
services:
geonode:
build:
context: .
hostname: geonode
container_name: geonode
ports:
- 8000:8000
volumes:
- .:/geonode/
entrypoint:
- /usr/bin/python
command: manage.py runserver 0.0.0.0:8000
network_mode: host
在我的Dockerfile中,我在apt-get update
之后运行FROM ubuntu:14.04
,但它失败了:Could not resolve 'archive.ubuntu.com'
我尝试了docker run -i -t --net=host ubuntu:14.04 /bin/bash
,然后运行apt-get update
并且它有效。
所以在我看来,docker-compose中的network_mode和带有docker run的--net=host
不会以相同的方式工作。
有人有解释吗?
答案 0 :(得分:0)
我不确定为什么会产生影响,但请尝试使用文档中显示的引号:
<!DOCTYPE html>
<html>
<head>
<title>expExp.html</title>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
<script>
var canvas;var ctx;
function fnOL()
{
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
fnOR();
}
function drawClock() {
var radius;
radius = canvas.height / 2;
ctx.translate(radius, radius);
radius = radius * 0.9;
drawCircle(ctx, radius);
}
function drawCircle(ctx, radius) {
var ang;
var num;
for (num = 1; num <= 40; num++) {
ang = num * Math.PI / 20;
ctx.rotate(ang);
ctx.translate(0, -radius * 0.85);
ctx.rotate(-ang);
ctx.beginPath();
ctx.arc(0, 0, radius / 20, 0, 2 * Math.PI);
ctx.stroke();
ctx.rotate(ang);
ctx.translate(0, radius * 0.85);
ctx.rotate(-ang);
}
}
function fnOR()
{
canvas.width = window.innerWidth; /// equal to window dimension
canvas.height = window.innerHeight;
drawClock();
}
</script>
</head>
<body onload='fnOL();' onresize="fnOR();">
<canvas id='canvas'>No Canvas</canvas><br/>
</body>
</html>
如果它不识别该属性,它将回退到默认值,通常是&#34; bridge&#34;。您还可以network_mode: "host"
验证网络类型。
答案 1 :(得分:0)
使用docker build
命令定义网络不是一个选项,仅在运行容器时使用,而docker-compose
只是docker引擎顶部的前端。因此,如果您无法通过主机上的桥接网络连接到互联网,我怀疑您无法在那里构建图像。
因此,首先让桥接网络工作,然后尝试构建您的图像。如果绝对无法使桥接网络工作,您可以通过在容器内手动运行命令来创建容器,然后将该容器提交到图像,但我不建议这样做,因为它不是很可重复或者可维护性。
答案 2 :(得分:0)
这样做时,它至少在3.7版中有效:
services:
my-app:
container_name: my-app
build:
context: .
network: host
network_mode: host
command: /app/my-app
由于所有端口都“暴露”,所以端口已过时。