管理货柜的码头工人-- Docker (二)

管理货柜的码头工人-- Docker (二)

Dockerfile 是什么?

简单来说,它是一个描述 Docker Image 如何建立的过程,描述的方法有点类似像安装说明文件一样。下面是一个 Dockerfile 范例:

管理货柜的码头工人-- Docker (二)

在撰写 Dockerfile 的时候,关键字通常会用全大写,如上面的例子是 FROM MAINTAINER RUN 三个。后面接的就是执行的内容,每个 Dockerfile 都一定会有一个 FROM ,它代表 Image 要从哪开始做起。 MAINTAINER 是标示 Dockerfile 维护者。 RUN 是执行 shell 指令,上面有两个 RUN ,第一个是用 apt 安装 zip extension ,第二个是安装 PHP Composer 。

看完这个 Dockerfile 应该可以猜得出来,它描述了如何建置有 Composer 的 Docker Image 。实际建置的指令如下:

管理货柜的码头工人-- Docker (二)

这样就建好了一个有 Composer 的 Docker Image 了,来试 run 看看:

管理货柜的码头工人-- Docker (二)

补充说明: --rm 指的是每次执行完指令,容器就删除; Image 名称后面接的是指令,所以也可以接 composer 或 ls 等等。

如何从头写一个 Dockerfile

写 Dockerfile 并不难,做起来就很像是给一台空的机器,再安装需要的软体和设定,最后就会成为一个符合需求的 Docker Image 。

比方说我们想要一个可以执行 Gulp 的 Image ,首先应该会想到的是,我们需要 Node 。因此第一步要上 Docker Hub 找有没有 Node , Node 这么热门当然官方有提供 Image 。因此我们决定好版本后,就可以开始写第一行了:

管理货柜的码头工人-- Docker (二)

写好一行之后,这时要开始发挥 CI 精神了!要先验证嘛!因此先 build 再执行看看,有没有 node 我们可以执行 node -v 试试:

管理货柜的码头工人-- Docker (二)

有看到版本了!再来 Gulp 可以用 package.json 安装,也可以用 -g 全域安装,那我们要的是一个可以全域执行 Gulp 的 Image ,所以使用全域安装好了:

管理货柜的码头工人-- Docker (二)

这次应该就可以用 gulp -v 了!

管理货柜的码头工人-- Docker (二)

接着我们就可以用这样的方法来执行 Gulp 的任务了:

管理货柜的码头工人-- Docker (二)

今天学习了怎么使用 Docker 建置属于自己的环境,这样就可以把家里许多服务都容器化,但接着该如何管理它们呢?



分享到:


相關文章: