构建 docker 镜像时 getaddrinfo() 线程无法启动

问题描述 投票:0回答:6

这是我的 Dockerfile

FROM linuxserver/code-server:latest
 
RUN curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - &&\
    apt-get install -y nodejs

我运行构建命令

docker build -t node-ide .

在本地计算机(Windows 11)上运行正常。 但是当我将其上传到 ubuntu 服务器并运行相同的命令时,出现错误

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM linuxserver/code-server:latest
 ---> 997b7b90cb65
Step 2/2 : RUN curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - &&    apt-get install -y nodejs
 ---> Running in d0ec2365c9d1
curl: (6) getaddrinfo() thread failed to start
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package nodejs
The command '/bin/sh -c curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - &&    apt-get install -y nodejs' returned a non-zero code: 100

为什么会出现这种情况?

node.js docker curl
6个回答
17
投票

我为 docker run 提供了帮助选项

--security-opt seccomp=unconfined

sudo docker run -it --security-opt seccomp=unconfined ubuntu
对于 docker-compose.yml

services: example: build: . security_opt: - seccomp:unconfined
    

10
投票
这很可能是由于 docker 映像中使用的

glibc

 lib 不匹配,期望允许系统调用 
clone(3)
,而您的 Docker 引擎(在主机上)不允许这样做。

https://github.com/adoptium/containers/issues/215#issuecomment-1142046045


2
投票
就我而言,我在几个 dockerfiles 中使用了 python 3.8,并且出现了相同的错误。由于一些新的官方图像更新,我通过指定更准确的版本来修复它。

FROM python:3.8

FROM python:3.8.15
    

0
投票
这似乎是网络问题,您可以使用“ping deb.nodesource.com”命令来测试它。


0
投票
根据@yong的评论,我降级了,现在它的工作原理如下:

FROM linuxserver/code-server:4.4.0-ls125 RUN curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - &&\ sudo apt-get install -y nodejs
    

0
投票
当升级/降级

FROM

 图像不可行时,这是对我有用的修复。它将这些答案中的信息与 
Docker 中的安全配置文件 (docker build --security-opt) 的解决方案相结合

制作文件

/tmp/temp-policy.json

:

{ "defaultAction" : "SCMP_ACT_ALLOW" }
然后,以 root 身份执行以下命令:

killall dockerd dockerd --seccomp-profile /tmp/temp-policy.json
然后在运行时,在单独的终端中运行您的 

docker build

 命令。

docker build

完成后,按Ctrl-c运行
dockerd
守护进程实例,然后使用发行版的服务重新启动机制重新启动它。

我不建议

keeping dockerd 使用此安全策略运行,因为它可能会禁用一些必要的保护。

© www.soinside.com 2019 - 2024. All rights reserved.