在容器内未找到Docker文件错误以创建新映像

时间:2019-09-14 06:30:41

标签: docker

我需要创建一个能够为其创建新图像的容器。 我的第一个客人是要在docker上运行docker,但发现正确 做到这一点的方法是使用--privileged参数,因此容器 有权访问docker守护程序。

为此,我使用以下命令:

docker run --privileged  -v /var/run/docker.sock:/var/run/docker.sock -v /home/user/container_data:/app/app -d -p 5100:5100 mcf2:latest

我正在使用 -v / home / user / container_data:/ app / app ,因为我正在从中创建新图像的文件夹 烧瓶应用程序的模板,并将其保存在该目录中。

我正在从模板创建的文件之一是'create_image.sh',其中包含docker build语句E.G.

'docker build -t new_container:latest .'

为此,我正在运行容器中运行以下代码:

bash_path= 'app/classification_model/create_image.sh'
subprocess.call([bash_path],shell=True)

但是我总是会收到此错误:

/bin/sh: 1: app/model/create_image.sh: docker: not found

但是文件确实存在,如果文件夹'app /'中的ls是否在文件夹列表中 我还检查了绑定目录和

'/home/user/container_data/classification_model/create_image.sh' 

存在。

我尝试将bash_path更改为

bash_path= '/app/classification_model/create_image.sh'

bash_path= '/app/app/classification_model/create_image.sh'

但是在所有情况下都会得到相同的错误

**编辑:**

我已将Docker文件更改为:

From docker:dind
FROM ubuntu:18.04 



RUN apt-get update -y && \
    apt-get install -y python3-pip python3-dev
...
...

然后再次运行:

docker run --privileged  -v /var/run/docker.sock:/var/run/docker.sock -v /home/user/container_data:/app/app -d -p 5100:5100 mcf2:latest

我仍然遇到相同的错误:

/bin/sh: 1: docker: not found

1 个答案:

答案 0 :(得分:1)

您正在混合两件事

  1. Docker中的Docker
  2. 具有主机Docker Socket的Docker中的Docker

在这两种情况下,都应将Docker安装在容器中,这并不意味着通过安装-v /var/run/docker.sock:/var/run/docker.sock这意味着任何容器都可以启动或运行docker命令。

  1. 在第一个选项中,它将启动容器作为子容器。
  2. 在第二个选项中,容器将有权访问Docker套接字,因此将能够启动容器。除了启动“子” 容器之外,它将启动“同级” 容器。

已更新: Docker官方dind映像基于高山,因此您可以使用apk代替apt进行安装。

FROM docker:dind

RUN apk add --no-cache python3 python3-dev

https://pkgs.alpinelinux.org/packages