你的例子是混合两个步骤,图像创作 and 运行图像,不能以这种方式混合(与Dockerfile
).
形象创作
A Dockerfile
用于创建图像。让我们拿这个alpine3.8 docker 文件 https://github.com/gliderlabs/docker-alpine/blob/c14b86580b9f86f42296050ec7564faf6b6db9be/versions/library-3.8/x86_64/Dockerfile作为一个最小的例子
FROM scratch
ADD rootfs.tar.xz /
CMD ["/bin/sh"]
这是一个基本图像,它不是基于另一个图像,它开始FROM scratch
。
然后复制并解压一个tar文件,参见ADD https://docs.docker.com/engine/reference/builder/#add并且shell被设置为启动命令,参见CMD https://docs.docker.com/engine/reference/builder/#cmd。你可以用以下方式构建它
docker build -t test_image .
从同一文件夹发出,其中Dockerfile
是。您还需要rootfs.tar.xz
在该文件夹中,从上面的 alpine 链接复制它。
运行容器
从此test_image
你现在可以生成一个容器
docker run -it test_image
它将启动并为您提供容器内的外壳。
Docker 组合
通常不需要构建您的images
在产生新的之前一遍又一遍container
。但如果你真的需要的话,你可以这样做docker-compose
. Docker 组合 https://docs.docker.com/compose/overview/旨在定义和运行由多个容器组成的服务堆栈。堆栈定义在docker-compose.yml
file.
version: '3'
services:
alpine_test:
build: .
build: .
负责构建image
在启动之前再次启动,但通常只需image: <image_name>
并使用已有的图像。