我需要创建一个能够为其创建新图像的容器。 我的第一个客人是要在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
答案 0 :(得分:1)
您正在混合两件事
在这两种情况下,都应将Docker安装在容器中,这并不意味着通过安装-v /var/run/docker.sock:/var/run/docker.sock
这意味着任何容器都可以启动或运行docker命令。
已更新:
Docker官方dind映像基于高山,因此您可以使用apk
代替apt
进行安装。
FROM docker:dind
RUN apk add --no-cache python3 python3-dev