简体   繁体   English

Docker:尝试在Docker中运行Docker时没有此类文件或目录

[英]Docker: No such file or directory when trying to run docker inside docker

Is docker binaries not available within docker? Docker二进制文件在Docker中不可用吗? If so, how could I call it within docker? 如果是这样,我如何在docker中调用它?

app.py app.py

import subprocess
cmd_payload = ['docker']
subprocess.Popen(cmd_payload, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Dockerfile Docker文件

FROM python:2.7-slim
VOLUME /data
WORKDIR /data
ADD . /data
CMD ["python", "app.py"]

Then, run 然后跑

docker build -t app .
docker run app

OUTOUT: OUTOUT:

[Errno 2] No such file or directory

EDIT: if i change 编辑:如果我改变

cmd_payload = ['docker'] 

to

cmd_payload = ['echo']

it doesnt throw an error. 它不会引发错误。 I would like to run docker executable . 我想运行docker可执行文件。 How could i do that? 我该怎么办?

If you want to run docker within of a container, the easy way to reach that is share docker daemon by volumes, Re-run your docker container with this: 如果要在容器中运行docker,最简单的方法是按卷共享docker守护进程,请使用以下命令重新运行docker容器:

docker run -it -v /var/run/docker.sock:/var/run/docker.sock:ro -v /usr/bin/docker:/usr/bin/docker:ro app

Moreover you have to add the library to Dockerfile 此外,您必须将库添加到Dockerfile

FROM python:2.7-slim
RUN apt-get update && apt-get install -y libltdl7 && rm -rf /var/lib/apt/lists/*
VOLUME /data
WORKDIR /data
ADD . /data
CMD ["python", "app.py"]

subprocess was able to run docker executable by adding shell=True 子进程能够通过添加shell = True运行docker可执行文件

cmd_payload = 'docker'
subprocess.Popen(cmd_payload, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

Not sure why it couldnt find it if not invoked under a shell 不知道如果没有在shell下调用为什么无法找到它

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM