运行docker容器时出错:启动容器过程导致“ exec:\“ python \”:在$ PATH中找不到可执行文件“:未知

jk1*_*093 4 flask docker dockerfile docker-compose docker-image

我正在尝试对一个简单的Python-Flask应用程序进行docker化,但是在运行容器时遇到错误。

泊坞窗:来自守护程序的错误响应:OCI运行时创建失败:container_linux.go:344:启动容器进程导致“ exec:\” python \”:在$ PATH中找不到可执行文件”:未知。

本地主机上的Workdir:

/home/ubuntu/flask_web
- app.py
- Dockerfile
- requirements.txt
Run Code Online (Sandbox Code Playgroud)

app.py

#flask_web/app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hey, we have Flask in a Docker container'


if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

Docker文件

FROM ubuntu:16.04

MAINTAINER xyz "xyz@gmail.com"

RUN apt-get update \
    && apt-get install -y software-properties-common vim \
    && add-apt-repository ppa:jonathonf/python-3.6 \
    && apt-get update -y \
    && apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv \
    && pip3 install --upgrade pip

# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /app/requirements.txt

WORKDIR /app

RUN pip install -r requirements.txt

COPY . /app

ENTRYPOINT [ "python" ]

CMD [ "app.py" ]
Run Code Online (Sandbox Code Playgroud)

命令:

docker build -t flask-test:latest .
docker run -p 5000:5000 flask-test
Run Code Online (Sandbox Code Playgroud)

预期:Flask Web应在端口5000上运行

实际结果:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"python\": executable file not found in $PATH": unknown.
Run Code Online (Sandbox Code Playgroud)

Car*_*vel 5

/usr/bin/python上面的代码构建的docker映像中没有任何内容。但是有/usr/bin/python3。因此,您可以python3直接将其用作您ENTRYPOINT的符号,也可以创建一个符号链接。


小智 5

我遇到了同样的问题,只是它喊的是 344 以外的其他号码

docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"python\": executable file not found in $PATH": unknown. docker 文件是

FROM ubuntu:20.04

RUN apt-get update -y
RUN apt-get install -y python3
RUN apt-get install -y python3-pip

COPY ./requirements.txt /app/requirements.txt

WORKDIR /app

RUN pip3 install -r requirements.txt

COPY . /app

ENTRYPOINT [ "python" ]

CMD [ "app.py" ]

Run Code Online (Sandbox Code Playgroud)

我将线路更改 ENTRYPOINT [ "python" ] ENTRYPOINT [ "python3" ] “现在工作正常”。原因是上面我使用了Python3,所以没有Python的候选者,而是有Python3的候选者。

RUN apt-get install -y python3
RUN apt-get install -y python3-pip
Run Code Online (Sandbox Code Playgroud)