docker-nginx

docker-nginx

新建目录

mkdir -p nginx/{log,conf,html}

切换到nginx目录下

cd nginx

你会看到3个文件夹conf,html,log

他们分别对应着容器中的文件目录,如下

宿主机下目录 容器中的文件目录 容器文件目录说明
conf /etc/nginx/conf.d 默认配置文件目录
html /usr/share/nginx/html 静态文件目录
log /var/log/nginx 日志目录

简单启动

直接制作容器

docker run -p 80:80 --name sample-nginx -v $(pwd)/html:/usr/share/nginx/html:ro -d nginx

在html下创建一个index.html,设置一个简单内容


Hello from Docker Nginx

  

Hello World

Hello from Docker Nginx

你访问你的服务器ip会发现,页面显示了你的内容.

Dockerfile制作容器

将dockerfile文件放在第一步新建的nginx目录下(也可自己重新创建一个目录)

FROM nginx
COPY html /usr/share/nginx/html

执行该命令

docker build -t some-content-nginx .

注意:其中.表示当前Dockerfile的目录

运行你的容器

docker run --name some-nginx -d some-content-nginx

暴露对外端口

docker run --name some-nginx -d -p 8080:80 some-content-nginx

-p指令

复杂配置

获取一个默认的配置文件,方法如下

docker run --name tmp-nginx-container -d nginx
docker cp tmp-nginx-container:/etc/nginx/nginx.conf $(pwd)/nginx.conf
docker rm -f tmp-nginx-container

有了nginx.conf后,可以进行自定义编辑,编辑完然后使用如下命令

直接启动方式

docker run --name pkuer_nginx -d -p 80:80 \
-v $(pwd)/log:/var/log/nginx \
-v $(pwd)/conf:/etc/nginx/conf.d \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
-v $(pwd)/html:/usr/share/nginx/html nginx

  1. 第一个-v:挂载日志目录
  2. 第二个-v:挂载配置目录
  3. 第三个-v:挂载主配置文件
  4. 第四个-v:挂载项目目录

Dockerfile方式

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

#EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。
#在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;
#另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
EXPOSE 80

#entrypoint的作用是,把整个container变成了一个可执行的文件,这样不能够通过替换CMD的方法来改变创建container的方式。
#但是可以通过参数传递的方法影响到container内部,每个Dockerfile只能够包含一个entrypoint
#当定义了entrypoint以后,CMD只能够作为参数进行传递
ENTRYPOINT ["nginx"]

#相当于在容器执行:nginx -g "daemon off;"
CMD ["-g","daemon off;"]

执行该命令

docker build -t complex_nginx .

运行你的容器

docker run --name my-complex-nginx -d complex_nginx

你可能感兴趣的:(docker,docker,nginx)