Python Can';t在Ubuntu服务器上构建Dockerfile

Python Can';t在Ubuntu服务器上构建Dockerfile,python,docker,dockerfile,Python,Docker,Dockerfile,我正在做一个python项目,在我本地的Windows上工作时,我在Ubuntu服务器上遇到了这个问题。当尝试运行mkdir指令时,它在第二步停止。似乎我不能运行典型的Ubuntu指令(apt-get-clean,apt-get-update) Dockerfile FROM python:3 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install --upgrade pip==20.0.2 &

我正在做一个python项目,在我本地的Windows上工作时,我在Ubuntu服务器上遇到了这个问题。当尝试运行
mkdir
指令时,它在第二步停止。似乎我不能运行典型的Ubuntu指令(apt-get-clean,apt-get-update)

Dockerfile

FROM python:3

RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip==20.0.2 && pip install -r requirements.txt
COPY . /code/
FROM python:3

WORKDIR /code
COPY requirements.txt .
RUN pip install --upgrade pip==20.0.2 && pip install -r requirements.txt
COPY . .
输出误差

OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:297: applying cgroup configuration for process caused \"mountpoint for devices not found\"": unknown

你能运行Docker hello world映像吗?如果不是,这可能表明您的安装/配置有问题

$docker run hello world
可以找到有关安装后步骤的更多信息。否则,第一个选项是尝试重新启动Docker

$sudo systemctl重新启动docker
Docker守护程序必须在后台以root权限运行,以前我在新安装的计算机上遇到过这样的问题:守护程序的更新组权限在哪里没有完全应用。重新启动守护程序或注销&登录可能会解决此问题

此外,当您在Dockerfile中声明
WORKDIR
时,如果该路径不存在,将自动创建该路径。设置了
WORKDIR
后,如果可能,所有路径都可以且应该与之相关。知道了这一点,我们可以简化Dockerfile

FROM python:3

RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip==20.0.2 && pip install -r requirements.txt
COPY . /code/
FROM python:3

WORKDIR /code
COPY requirements.txt .
RUN pip install --upgrade pip==20.0.2 && pip install -r requirements.txt
COPY . .

这可能足以解决你的问题。根据我的经验,Docker构建回溯有时可能相当模糊,但听起来这个特定错误可能是由于创建目录的尝试失败造成的,可能是主机上的权限问题,也可能是容器内部的语法问题。

您能运行Docker hello world映像吗?如果不是,这可能表明您的安装/配置有问题

$docker run hello world
可以找到有关安装后步骤的更多信息。否则,第一个选项是尝试重新启动Docker

$sudo systemctl重新启动docker
Docker守护程序必须在后台以root权限运行,以前我在新安装的计算机上遇到过这样的问题:守护程序的更新组权限在哪里没有完全应用。重新启动守护程序或注销&登录可能会解决此问题

此外,当您在Dockerfile中声明
WORKDIR
时,如果该路径不存在,将自动创建该路径。设置了
WORKDIR
后,如果可能,所有路径都可以且应该与之相关。知道了这一点,我们可以简化Dockerfile

FROM python:3

RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip==20.0.2 && pip install -r requirements.txt
COPY . /code/
FROM python:3

WORKDIR /code
COPY requirements.txt .
RUN pip install --upgrade pip==20.0.2 && pip install -r requirements.txt
COPY . .
这可能足以解决你的问题。根据我的经验,Docker构建回溯有时可能相当模糊,但听起来这个特定错误可能是由于创建目录的尝试失败造成的,可能是主机上的权限问题,也可能是容器内部的语法问题。

我通过(重新)安装apt而不是snap解决了这个问题:

sudo snap remove docker
sudo apt install docker-io
测试(正在工作):

我通过(重新)安装apt而不是snap解决了这个问题:

sudo snap remove docker
sudo apt install docker-io
测试(正在工作):


谢谢@vulpxn,无法运行helloworld命令。我完全卸载了docker并重新安装,现在它似乎可以工作了。令我惊讶的是,几天前我部署了一个带有类似Dockerfile的python项目,该项目运行良好,没有修改docker安装方面的任何内容,这一尝试构建了一个不同的项目,但类似的项目是不允许的……感谢@vulpxn,无法运行hello world命令。我完全卸载了docker并重新安装,现在它似乎可以工作了。令我惊讶的是,几天前我部署了一个带有类似docker文件的python项目,它运行良好,没有修改docker安装方面的任何内容,这一尝试构建了一个不同但类似的项目是不允许的……我有一个类似的问题。重新启动我的机器很快就解决了这个问题。卸载Docker并再次安装是否有帮助?我也有类似的问题。重新启动我的机器很快就解决了这个问题。卸载Docker并再次安装它是否有帮助?