C.6 docker install nginx

安装nginx镜像

准备

# 安装最新的nginx镜像
docker pull nginx:1.13

# 在本地磁盘创建nginx的目录(用于存放nginx的数据文件和配置文件)
mkdir /opt/docker-software/nginx

nginx.conf

在 /opt/docker-software/nginx/ 目录下创建 nginx.conf ,目的是替换docker nginx中的默认配置文件,内容如下:

user  root;
#worker_processes为nginx的进程数,进程数等于CPU的核数
worker_processes  1;
#nginx 进程打开的最多文件描述符数目,一般为ulimit -n与nginx 进程数相除
worker_rlimit_nofile  65535;

#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;
    error_log   /var/log/nginx/error.log warn;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    client_max_body_size 512M;
    client_body_buffer_size 128k;
    
    #防止504 gateway time out
    fastcgi_connect_timeout 1200s;
    fastcgi_send_timeout 1200s;
    fastcgi_read_timeout 1200s;

    server {
        listen       80 default_server;
        
        location / {
            root   /usr/share/nginx/html;
            #根据自己项目的特点,设置html、js、css、img等静态资源的缓存时长
            add_header  Cache-Control max-age=86400;
        }
    }
}

创建HTML

在 /opt/docker-software/nginx/demo1/ 目录下创建 index.html , 内容:


    
        

hello demo1

在 /opt/docker-software/nginx/demo2/ 目录下创建 index.html , 内容:


    
        

hello demo2

启动

# 启动第一个nginx
docker run --name nginx-demo1 \
    -p 81:80 \
    -v /opt/docker-software/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /opt/docker-software/nginx/demo1/:/usr/share/nginx/html/ \
    -v /opt/docker-software/nginx/demo1-logs/:/var/log/nginx/:rw \
    -d nginx:1.13

# 启动第二个nginx
docker run --name nginx-demo2 \
    -p 82:80 \
    -v /opt/docker-software/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /opt/docker-software/nginx/demo2/:/usr/share/nginx/html/ \
    -v /opt/docker-software/nginx/demo2-logs/:/var/log/nginx/:rw \
    -d nginx:1.13

命令解释:

  • -p 为将三个端口映射为物理机器的端口
  • 将宿主机的配置文件(/opt/docker-software/nginx/nginx.conf/opt/docker-software/nginx/nginx.conf)映射到容器的配置文件(/etc/nginx/nginx.conf)
  • log 为映射nginx的日志文件目录
  • html 为映射nginx存放网站的目录
  • 注意:在nginx.conf中配置的html目录(/usr/share/nginx/html/)和日志目录(/var/log/nginx/),都需要映射到宿主机上

测试

打开本地浏览器访问主机的81和82端口

容器管理命令:

# 停止
docker stop 容器id
# 启动
docker start 容器id
# 重启
docker retart 容器id

你可能感兴趣的:(C.6 docker install nginx)