本篇博文给大家介绍如何在docker容器中构建一个nginx服务,并且发布一个小网站。
首先介绍一下dockerfile
dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile,根据指令生成定制的image。相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是怎么产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻烦。
首先我们先创建dockerfile文件,存放在/root/docker_nginx下,命名为nginx_dockerfile
[root@localhost ~]# mkdir docker_nginx
[root@localhost ~]# touch docker_nginx/nginx_dockerfile
[root@localhost ~]# vi docker_nginx/nginx_dockerfile
nginx_dockerfile内容如下
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y nginx
RUN echo '新年快乐,狗年大吉' >/usr/share/nginx/html/index.html
EXPOSE 80
解释一下:
FROM指令为后面的指令提供基础镜像
RUN指令会在前一条命令创建出的镜像的基础上创建一个容器,并在该命令运行结束后提交该容器为新镜像
EXPOSE指定了容器对宿主机开放的端口
接下来我们根据dockerfile来创建镜像
如上图,镜像已经创建完成。
从该镜像运行容器,我们需要在宿主机上指定一个端口与容器的端口做映射,如下:
[root@localhost docker_nginx]# docker run -d -p 80:80 --name web 8ad05e091619 nginx -g "daemon off;"
8b9e123d35819a059da47d10d19e4b0c27168a1b7d9ef54324504839fd0f817e
[root@localhost docker_nginx]#
可以看到docker进程已经运行,并且监听在宿主机的tcp80端口
我们来尝试访问下页面:
很尴尬,出现了乱码;
咋整呢,要么让容器能够对这个文本内容正确编解码,要么把网页的内容改掉(比如换成英文)
我比较懒,采用的是后一种
具体咋整呢,下一篇解决。