Dockerfile入门实践

Dockerfile入门实践

本教程将通过一个具体实例阐述Dockerfile的基本用法,意在使大家对Dockerfile有个初步了解,并不旨在详述Dockerfile的所有指令。在本案中将利用Dockerfile构建基于CentOS系统安装Apache Web服务(httpd)的镜像。

构建Dockerfile

在本地主机新建一个目录(本文为mydocker)存放Dockerfile文件,新建Dockerfile文件:

mkdir /mydocker
cd /mydocker
vim Dockerfile

向Dockerfile文件中添加如下内容,注意本示例基于CentOS系统。

FROM centos:latest

LABEL project="Dockerfile for Apache Web"

RUN yum -y install httpd

EXPOSE 80

VOLUME /var/www/html

ENTRYPOINT [ "/usr/sbin/httpd" ]
CMD ["-D", "FOREGROUND"]

Dockerfile文件简述

此处仅简要介绍一下上述文件中的Dockerfile指令,更多详细信息参考:Dockerfile reference

FROM

"FROM"指令是Dockerfile的第一条命令,指定所构建镜像的基础镜像。本例基于CentOS基础镜像。

LABEL

LABEL指令使用键值对方式向镜像中添加元数据(metadata)。

RUN

镜像的构建指令,在构建镜像时运行某些命令。文中运行安装httpd的指令。

EXPOSE

设置指令,指定镜像将来生成的容器在运行时监听的端口,即容器运行时打开该端口并监听。这里监听Web服务的80端口。

VOLUME

VOLUME指令在镜像中创建一个指定的挂载点,该挂载点可以共享主机的数据或者其他容器的数据。下文中指定“/var/www/html”为挂载点,共享主机的“/data”目录。

ENTRYPOINT

指定镜像将来生成的容器运行时的执行命令入口。这里采用ENTRYPOINT [“executable”, “param1”, “param2”]这种格式,指定web服务的可执行程序httpd。

CMD

作用与ENTRYPOINT类似,可以配合ENTRYPOINT使用。

生成docker镜像

假设当前已经进入到mydocker目录,使用"docker build"命令来生成镜像

docker build -t centos:httpd .

注意:“.”不能遗漏,表示当前目录。

启动容器实例

首先,为刚才在Dockerfile中VOLUME创建挂载点。在本地主机下创建一个新目录(/data目录),用于挂载Apache Web的根目录/var/www/html,对应Dockerfile文件中定义的“VOLUME /var/www/html”。

mkdir /data

随后,启动容器:

docker run -td -p 80:80 -v /data:/var/www/html --name=web centos:httpd

这里-p指定本地主机和容器的端口映射,-v指定数据挂载(volume)。

查看启动的容器实例:

docker ps

在这里插入图片描述

验证Apache Web(Httpd)是否安装成功

在/data目录创建index.html文件,由于刚才设定了卷的挂载,index.html将自动挂载到容器的/var/www/html目录,而这个目录是Apache Web的根目录。

cd /data
vim index.html

添加如下内容:

This is an apache httpd test. Build with dockerfile on CentOS 7.
Data are on host but share with volumn /var/www/html on the Docker container.

最后使用"http://localhost/"进行测试,得到如下结果:

在这里插入图片描述

发布了30 篇原创文章 · 获赞 17 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/llfjfz/article/details/103264664