如何使用Docker文件运行Docker命令

时间:2018-10-03 07:08:41

标签: docker dockerfile

我有一些在码头上运行的基本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的新手

1 个答案:

答案 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

它将启动并为您提供容器内的外壳。

Docker Compose

通常不需要在生成新的images之前一遍又一遍地构建container。但是,如果确实需要,可以使用docker-compose来完成。 Docker Compose用于定义和运行由多个容器组成的服务堆栈。堆栈是在docker-compose.yml文件中定义的。

version: '3'
services:
  alpine_test:
    build: .

build: .会在启动之前重新构建image,但是通常仅拥有image: <image_name>并使用已经存在的图像就足够了。