在运行Docker映像的命令行上运行Python脚本

时间:2020-07-06 09:33:20

标签: docker

我使用带有Python和内部一些库的Dockerfile构建了一个docker映像(内部没有我的项目代码)。在我的本地工作目录中,有一些脚本要在docker上运行。所以,这就是我所做的

$ cd /path/to/my_workdir
$ docker run -it --name test -v `pwd`:`pwd` -w `pwd` my/code:test python src/main.py --config=test --results-dir=/home/me/Results

命令python src/main.py --config=test --results-dir=/home/me/Results是我要在Docker容器中运行的命令。

但是,它会返回

/home/docker/miniconda3/bin/python: /home/docker/miniconda3/bin/python: cannot execute binary file

如何修复它并运行我的代码?

这是我的Dockerfile

FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04

MAINTAINER Me <me@me.com>

RUN apt update -yq && \
    apt install -yq curl wget unzip git vim cmake sudo

RUN adduser --disabled-password --gecos '' docker && \
    adduser docker sudo && \
    echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

USER docker

WORKDIR /home/docker/

RUN chmod a+rwx /home/docker/ && \
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
    bash Miniconda3-latest-Linux-x86_64.sh -b && rm Miniconda3-latest-Linux-x86_64.sh 

ENV PATH /home/docker/miniconda3/bin:$PATH

Run pip install absl-py==0.5.0 atomicwrites==1.2.1 attrs==18.2.0 certifi==2018.8.24 chardet==3.0.4 cycler==0.10.0 docopt==0.6.2 enum34==1.1.6 future==0.16.0 idna==2.7 imageio==2.4.1 jsonpickle==1.2 kiwisolver==1.0.1 matplotlib==3.0.0 mock==2.0.0 more-itertools==4.3.0 mpyq==0.2.5 munch==2.3.2 numpy==1.15.2 pathlib2==2.3.2 pbr==4.3.0 Pillow==5.3.0 pluggy==0.7.1 portpicker==1.2.0 probscale==0.2.3 protobuf==3.6.1 py==1.6.0 pygame==1.9.4 pyparsing==2.2.2 pysc2==3.0.0 pytest==3.8.2 python-dateutil==2.7.3 PyYAML==3.13 requests==2.19.1 s2clientprotocol==4.10.1.75800.0 sacred==0.8.1 scipy==1.1.0 six==1.11.0 sk-video==1.1.10 snakeviz==1.0.0 tensorboard-logger==0.1.0 torch==0.4.1 torchvision==0.2.1 tornado==5.1.1 urllib3==1.23

USER docker
ENTRYPOINT ["/bin/bash"]

2 个答案:

答案 0 :(得分:1)

在运行文件之前尝试使其可执行文件。

就像约翰在dockerfile中提到的那样

FROM python:latest

COPY src/main.py /usr/local/share/

RUN chmod +x /usr/local/share/src/main.py      #<-**--- just add this also

# I have some doubts about the pathing 

CMD ["/usr/local/share/src/main.py", "--config=test --results-dir=/home/me/Results"]

答案 1 :(得分:0)

您可以在docker文件中运行python脚本,方法是将其添加到docker文件中:

FROM python:latest

COPY src/main.py /usr/local/share/

CMD ["src/main.py", "--config=test --results-dir=/home/me/Results"]