首先,系统(3.8以上内核的linux)中安装好 Docker 这个运用程序。因为网络缘由,咱们下载一个Docker官方的镜像须要很长的时间,甚至下载失败。为此,阿里云容器镜像服务提供了官方的镜像站点,从而加速官方镜像的下载速度。html
[ 不会的能够参考我以前的文章:Docker <一> 架构简介与Linux上安装 http://www.javashuo.com/article/p-qdsjcbsd-bh.html]。linux
1、Docker pull 安装 Nginx
一、查看docker仓库中的 nginx 命令
# 使用 docker search 命令搜索存放在 Docker Hub 中的镜像 docker search nginx
以看到下图所示的信息:nginx
二、为选定须要pull到系统中的官方 Nginx 镜像
# docker pull nginx -------- nginx 为选定须要pull到系统中的官方 nginx 镜像 docker pull nginx
整个pull过程须要花费一些时间,耐心等待。docker
若见下图证实pull成功。 api
2、查看并启动Docker 镜像
一、列出已下载的镜像
# 使用 docker images 命令便可列出已下载的镜像 docker images
执行命令后,可看到相似于以下的表格:bash
二、列出运行中的容器
# 使用 docker ps 命令便可列出运行中的容器 docker ps # 使用 docker ps -a 命令便可列出全部(包括已中止的)的容器 docker ps -a
执行命令后,可看到相似于以下的表格:网络
能够发现,目前没有运行的 nginx 容器。故,接下来咱们新建并启动一个 nginx 容器。架构
3、启动容器,部署nginx并修改配置文件
一、启动跑个静态网页,测试下 nginx 容器
# 启动一个名为nginx81(名字本身根据需求起名字,通常见名知意便可) 的容器 docker run --name nginx81 -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html nginx # 默认容器对这个目录有可读写权限,能够经过指定ro,将权限改成只读(readonly) # docker run --name my-nginx -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html:ro -d nginx
访问 http://Docker宿主机IP:指定的Docker宿主机端口 ,能够访问说明app
二、部署nginx 项目并修改配置文件
通常状况下docker启动时进行配置,只要把配置文件的目录挂载出来就能够,可是nginx倒是先加载一个主配置文件nginx.conf,在nginx.conf里再加载conf.d目录下的子配置文件(通常最少一个default.conf文件)。 tcp
# 普通的挂载方式 docker run --name mynginx2 --mount source=/var/www,target==/usr/share/nginx/html,readonly \ --mount source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx
docker 启动 nginx 加载自定义配置:
# 1. 第一个“-v”,是项目位置,把项目放到挂载到的目录下便可 # 2. 第二个“-v”,是挂载的主配置文件"nginx.conf",注意"nginx.conf"文件内有一行 # "include /etc/nginx/conf.d/*.conf;" , # 这个include指向了子配置文件的路径,此处注意include后所跟的路径必定不能出错 # 3. 第三个“-v”,把docker内子配置文件的路径也挂载了出来,注意要与 “2.” 中include指向路径一致 # 4. nginx.conf是挂载了一个文件(docker是不推荐这样用的),conf.d挂载的是一个目录 docker run \ --name nginx81 \ -d -p 81:80 \ -v /usr/docker/nginx81/html:/usr/share/nginx/html \ -v /etc/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro \ -v /etc/docker/nginx81/conf.d:/etc/nginx/conf.d \ nginx
准备挂载的 nginx.conf :
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
准备挂载的 default.conf :
server {
listen 80;
server_name localhost;
#charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api{ proxy_pass http://192.168.1.1:9999/api; # access_log "logs/test.log"; } }
上述的依然不够灵活,能够直接进入容器操做:
1) 启动
# 启动一个名 nginx81 的 nginx 容器 docker run --name nginx81 -d -p 81:80 -v \ /usr/docker/nginx81/html/:/usr/share/nginx/html:ro -d nginx
# 添加日志记录启动 docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html/:/usr/share/nginx/html:ro \ -v /logs:/var/log/nginx -d nginx
2)拷贝容器内的配置文件到本地,进行个性化配置等操做
docker cp nginx:/etc/nginx/nginx.conf /usr/docker/nginx81/nginx.conf
3)从新指定配置文件启动
docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html:/usr/share/nginx/html:ro -v $PWD/logs:/var/log/nginx -v /usr/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
4)进入容器
sudo docker exec -it d3a86da6fad1 /bin/bash # 退出容器:Ctrl+P+Q
4、经过 Dockerfile 构建 Nginx
相关连接
· docker 官网 Nginx 安装文档: https://docs.docker.com/samples/library/nginx/#hosting-some-simple-static-content
· Nginx 官网文档:https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/
本文为博主原创文章,转载请注明出处!