dockerFile

利用 Dockerfile,使创建镜像的过程全部自动化。

Dockerfile
Dockerfile 是一个描述如何创建 Docker 镜像所需步骤的文本文件。

1
2
3
$ mkdir cowsay
$ cd cowsay
$ touch Dockerfile

编辑Dockerfile

1
2
FROM debian:wheezy
RUN apt-get update && apt-get install -y cowsay fortune

执行Dockerfile

1
2
3
$ ls
Dockerfile
$ docker build -t test/cowsay-dockerfile .

最后面那个点代表当前目录下执行docker build
创建成功,执行docker

1
$ docker run test/cowsay-dockerfile /usr/games/cowsay "Moo"

通过利用 Dockerfile 的 ENTRYPOINT 指 令,

我 们 可 以 让 用 户 更 易 于 使 用 这 个 镜 像。
ENTRYPOINT 指令让我们指定一个可执行文件,同时还能处理传给 docker run 的参数。
在 Dockerfile 的最后加上下面这一行:

1
ENTRYPOINT ["/usr/games/cowsay"]

现在再次生成新镜像,以后使用这个新镜像时再也不需要指定 cowsay 命令了:

1
2
3
$ docker build -t test/cowsay-dockerfile .

$ docker run test/cowsay-dockerfile "Moo"

我们可以把 ENTRYPOINT 指定为一个我们自己的脚本

创建一个新文件 entrypoint.sh

1
2
3
4
5
6
#!/bin/bash
if [ $# -eq 0 ]; then
/usr/games/fortune | /usr/games/cowsay
else
/usr/games/cowsay "$@"
fi

用 chmod +x entrypoint.sh 把文件设为可执行

修改DockerFile

1
2
3
4
FROM debian
RUN apt-get update && apt-get install -y cowsay fortune
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]

测试执行

1
2
3
docker build -t test/cowsay-dockerfile .
docker run test/cowsay-dockerfile
docker run test/cowsay-dockerfile Hello Moo