1. docker命令

# 启动容器
docker run -it --name nginx-test -p 8888:80  --mount type=bind,source=/data/volumes/nginx,target=/data --mount type=bind,source=/data/volumes/nginx/nginx.conf,target=/etc/nginx/nginx.conf  nginx:latest 

# 命令行进入容器
docker exec -it nginx-test /bin/bash

命令解析:

--mount:挂载目录或文件到容器中,其中source是本地文件(夹)目录,target是容器内文件(夹)路径;

  • /data/volumes/nginx,提供了一个文件挂载目录,可选;
  • /data/volumes/nginx/nginx.conf,提供了nginx的配置文件,可选

/data/volumes/nginx,和/data/volumes/nginx/nginx.conf两个目录需要提前创建好。

2. 配置文件解析

# 注意容器里必须使用root,使用其他用户会存在文件访问权限问题
user  root;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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;
    server{
    	listen 80;
    	# 在本地测试时,可以使用localhost或服务器ip,生产环境下使用域名,使用空格分隔开来
        server_name 192.168.0.1 example.com;
        # html挂载目录
        root /data;
        location / {
        	# 索引的index文件,默认目录在root挂在的目录下,可以写多个次序使用,空格分隔
        	index index.html;
        }
    }
}

参考

[1] nginx 配置默认主页、目录浏览

[2] Nginx配置文件详解

[3] 万字长文看Nginx配置详解!

[4] Docker Bind mounts doc