【问题标题】:"Error: Address aleready in use" during docker build command在 docker build 命令期间出现“错误:地址已在使用中”
【发布时间】:2018-07-12 01:18:36
【问题描述】:

我正在尝试从 Dockerfile 构建映像,以便从中启动多个容器。在 Dockerfile 中,我复制了我的 /etc/apt/source/sources.list,然后使用 RUN 关键字执行多个命令(apt update 和 apt install)。

当我执行 docker build 命令时,执行正确开始,我看到中间容器正在创建和删除。但在某些时候,我收到一条错误消息,告诉我“地址已在使用中”。

当我检查创建的最后一个中间容器时,在状态部分中我得到:

状态:已创建
...
PID : 0
退出代码:128
错误:地址已在使用中

编辑:

Dockerfile 如下所示:

FROM i386/debian AS node

COPY sources.list /etc/apt/sources.list

RUN apt-get update
RUN apt-get install -y openssh-server
RUN apt-get install -y vim gdb valdgrind
RUN apt-get-install -y python

...

我从构建命令得到的最后一个输出是:

Step 4/37 : RUN apt-get update
 ----> Running in ce7722ffeeb6
Address already in use

结束编辑

我不明白这个错误是关于什么的。有人有想法吗?

我正在使用 Docker 17.12.0 在 Debian 9 上运行。

【问题讨论】:

  • 请提供您的 Dockerfile 和/或docker build 输出的最后一行,它应该包含最后执行的 Dockerfile 语句,这会导致错误
  • 我发布了 Dockerfile 和输出
  • 看起来有点奇怪,你sources.list的内容是什么?如果删除COPY sources.list /etc/apt/sources.list 行,问题是否仍然存在?如果您从FROM i386/debian 切换到另一个基本映像,例如FROM ubuntu,您的问题是否仍然存在?

标签: docker


【解决方案1】:

这意味着您影响到您的一个容器的端口之一当前已被另一个容器或您计算机上的另一个应用程序使用。

一个很好的例子是,如果您在一个容器中运行您的应用程序,该容器的端口由 docker 明确公开,同时从您的 IDE 运行它。

如果这对您来说没有问题,您可以将您的 dockerfile 粘贴给我们吗?

【讨论】:

  • 好的,可能就是这样。但是我应该如何避免使用相同的端口?我的意思是,docker 自己创建、覆盖和删除这些临时容器来创建我要求的图像,对吗?一旦我得到我的镜像并基于它创建自己的容器,我就知道如何控制它们的部署,但我从不要求那些临时容器,所以我看不到如何控制它们使用的端口?
  • 在 docker 中,您始终必须明确公开您希望能够从容器外部访问的端口,在您的情况下,我希望它是端口 80,因为您有服务器,但我不能t 说因为我在您提供的 dockerfile 中没有看到您的 EXPOSE 行(您可以添加它吗?)。那么当你启动你的容器时,你必须使用 -p 来说明映射应该如何进行,你能告诉我们你启动容器的命令吗?
猜你喜欢
  • 2021-10-10
  • 2021-08-30
  • 2016-10-24
  • 2020-05-03
  • 2020-10-06
  • 1970-01-01
相关资源
最近更新 更多