注:本文章是基于《第一本Docker书》第5章内容的学习笔记,建议购买原书阅读
一、使用Docker测试静态网站
Sample网站的初始Dockerfile
-
创建目录和Dockerfile文件
mkdir sample cd sample touch Dockerfile
-
下载nginx相关配置文件
cd sample mkdir nginx && cd nginx wget https://raw.githubusercontent.com/jamtur01/dockerbook-code/master/code/5/sample/nginx/global.conf wget https://raw.githubusercontent.com/jamtur01/dockerbook-code/master/code/5/sample/nginx/nginx.conf cd ..
-
编写Dockerfile
FROM ubuntu:14.04 MAINTAINER James Turnbull "james@example" ENV REFRESHED_AT 2014-06-01 RUN apt-get update RUN apt-get -y -q install nginx RUN mkdir -p /var/www/html/website ADD nginx/global.conf /etc/nginx/conf.d/ ADD nginx/nginx.conf /etc/nginx/nginx.conf EXPOSE 80 这个文件包括安装nginx,创建目录/var/www/html,将配置文件添加到镜像中,公开镜像80端口。 nginx.conf 文件中 daemon off;阻止nginx进入后台运行,作用是保持容器处于活跃状态,如果nginx以守护进程运行,会导致容器启动时处于运行状态,之后退出。
-
使用 docker build 命令构建镜像。注意:命令最后有个“.”
docker build -t jamtur01/nginx .
-
从Sample网站和Nginx镜像构建容器
cd sample mkdir website && cd website wget https://raw.githubusercontent.com/jamtur01/dockerbook-code/master/code/5/sample/website/index.html cd .. docker run -d -p 8080:80 --name website -v $PWD/website:/var/www/html/website jamtur01/nginx nginx
-v:表示将宿主机的目录作为卷,挂在到容器中。-v 源目录:ro:容器里的目录。在源目录后可加rw或者ro来制定目录的读写状态。
卷:在docker中十分重要,他是一个或者多个容器内被选定的目录,可以绕过分层的联合文件系统,为Docker提供持久数据或者共享数据。对卷的修改会直接生效,并绕过镜像。当提交或者创建镜像时,卷不被包含在镜像。
通过浏览器访问 http://192.168.43.99:8080/ 可以显示index.html页。