一、用docker run运行nginx
执行docker run命令即可实现:
$ docker run -p 8080:80 -d daocloud.io/nginx
这里-p执行的是端口映射操作,将nginx运行的80端口映射到本机的8080端口。
执行后,在localhost:8080即可看到nginx的界面。
如果需要nginx运行特定的界面,则需要将自己编辑的html文件放入容器中。
例如,编辑一个index.html文件:
<html> <h1>Hello World.</h1> </html>
用cp命令将这一文件放入容器:
$ docker cp index.html [容器id或name]://usr/share/nginx/html
再执行run命令,就可以在localhost:8080看到hello world了。
但是,放入容器的文件在容器重启后会删除,因此需要将容器保存为新的镜像,以永远保存对容器所做的修改。用commit命令执行:
docker commit -m 'mynginx' [容器id或name] mynginx
将容器保存为一个新的镜像。这样,以后再启用时就可以直接看到hello world了。
二、用dockerfile运行nginx
对于较复杂的一系列操作,可以将这些操作编写为一个文件(即dockerfile),用docker build命令执行。
文件编写如下:
FROM ubuntu MAINTAINER Author RUN apt-get update RUN apt-get install -y nginx COPY index.html /var/www/html ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"] EXPOSE 80
from指定了基础镜像,maintainer指定了维护人,run是执行的指令,这里执行的是在容器中下载nginx。copy命令将index.html文件放入容器中。entrypoint命令指定了当容器运行时执行的指令,这里是指当容器运行时执行nginx。expose指定了运行的端口。
编写完dockerfile后,用build命令创建镜像:
$ docker build -t "test"
这样,docker会按照dockerfile的顺序执行操作,并创建test镜像。
docker run这个镜像,再通过curl查看对应的网址,就能看到index.html的内容。
$ docker run -d -p 80:80 test $ curl http://localhost