这是我的 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
为什么会出现这种情况?
我为 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
FROM python:3.8
到
FROM python:3.8.15
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
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 使用此安全策略运行,因为它可能会禁用一些必要的保护。