首页 > 解决方案 > docker build 失败并显示“地址已在使用中”

问题描述

docker build失败并显示“地址已在使用中”

# docker build . --no-cache
Step 1/23 : FROM python:3.6
 ---> 8256ec07b2ad
Step 2/23 : ENV PYTHONUNBUFFERED 1
 ---> Running in 78555dd0c8cf
Removing intermediate container 78555dd0c8cf
 ---> ed07113d57c9
Step 3/23 : RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 apache2-utils apache2-dev
 ---> Running in 34b2929a0f8e
Address already in use

我的 /etc/docker/daemon.json 是:

{
  "iptables": false,
  "bip": "172.16.0.1/24"
}

docker0-interface正常存在

# ip a sh docker0
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:a1:8c:d4:4a brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.1/24 brd 172.16.0.255 scope global docker0
       valid_lft forever preferred_lft forever

我在多个主机上得到了这些,重新启动 docker 守护进程会有所帮助,但通常仅用于使用网络的第一个构建/第一步。

我知道错误似乎是构建过程占用了 docker0 接口,但我不明白为什么。

该错误与守护程序选项无关,我将它们删除以进行测试。数据包永远不会进入 docker0 接口(使用 iptables -vL 检查),因此它似乎不是防火墙问题(也因为“地址已在使用中”是套接字错误......)

有什么想法/建议吗?

编辑:

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 apache2-utils

编辑2码头信息:

# 码头信息
容器:20
 跑步:1
 暂停:0
 停止:19
图片:105
服务器版本:18.06.1-ce
存储驱动程序:aufs
 根目录:/var/lib/docker/aufs
 支持文件系统:extfs
 目录:162
 Dirperm1 支持:真
日志记录驱动程序:json 文件
Cgroup 驱动程序:cgroupfs
插件:
 音量:本地
 网络:桥接主机 macvlan 空覆盖
 日志: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
群:不活跃
运行时:runc
默认运行时:runc
初始化二进制文件:docker-init
容器版本:468a545b9edcd5932818eb9de8e72413e616e86e
runc 版本:69663f0bd4b60df09991c08812a60108003fa340
初始化版本:fec3683
安全选项:
 服装
内核版本:4.18.0-3-amd64
操作系统:Debian GNU/Linux buster/sid
操作系统类型:linux
架构:x86_64
中央处理器:4
总内存:7.677GiB
姓名:
ID:
Docker 根目录:/var/lib/docker
调试模式(客户端):false
调试模式(服务器):假
注册表:https://index.docker.io/v1/
标签:
实验:错误
不安全的注册表:
 127.0.0.0/8
启用实时恢复:假

警告:不支持交换限制
警告:bridge-nf-call-iptables 已禁用
警告:bridge-nf-call-ip6tables 已禁用

标签: dockernetworking

解决方案


可能是因为您正在安装 2 个版本的 Apache。尝试安装 apache2 或 apache2-dev,不要同时安装。


推荐阅读