我有一些在码头上运行的基本docker命令。现在我想要的是将所有基本的docker命令使用到一个docker文件中,然后构建该docker文件。
例如 考虑两个docker文件 文件-Docker1,Docker2
Docker1包含要运行的命令列表
在Docker2内部,我想构建Docker1并同时运行它
Docker2 :(考虑带有演示代码的场景)
FROM ubuntu:16.04
MAINTAINER abc@gmail.com
WORKDIR /home/docker_test/
RUN docker build -t Docker1 .
RUN docker run -it Docker1
我想做这样的事情。但是它抛出了-docker:来自守护程序oci运行时的错误响应创建失败的container_linux.go
我该怎么做?我要去哪里错了
PS-我是Docker的新手
答案 0 :(得分:0)
您的示例将两个步骤混合在一起:图像创建和运行图像,这些步骤不能以这种方式(使用Dockerfile
)进行混合。< / p>
Dockerfile
用于创建图像。让我们以这个alpine3.8 docker file作为最小示例
FROM scratch
ADD rootfs.tar.xz /
CMD ["/bin/sh"]
这是一个基础图像,它不基于另一个图像,它以FROM scratch
开始。
然后,将tar文件复制并解压缩,请参见ADD,并将shell设置为启动命令,请参见CMD。您可以使用
docker build -t test_image .
从Dockerfile
所在的同一文件夹发出。您还将需要该文件夹中的rootfs.tar.xz
,然后从上方的高山链接复制它。
现在,您可以从test_image
中生成一个具有
docker run -it test_image
它将启动并为您提供容器内的外壳。
通常不需要在生成新的images
之前一遍又一遍地构建container
。但是,如果确实需要,可以使用docker-compose
来完成。 Docker Compose用于定义和运行由多个容器组成的服务堆栈。堆栈是在docker-compose.yml
文件中定义的。
version: '3'
services:
alpine_test:
build: .
build: .
会在启动之前重新构建image
,但是通常仅拥有image: <image_name>
并使用已经存在的图像就足够了。