docker环境下运行nginx

本文详细介绍如何使用Docker容器部署Nginx服务,包括下载镜像、配置数据卷、编辑nginx.conf、运行容器及配置SSL证书等步骤。

一、docker运行nginx

1、搜索并下载 nginx镜像

docker search nginx   用docker search命令也能查,但是其实搜索结果看起来不方便。

更适合在 https://hub.docker.com/ 搜索镜像,比如搜索nginx

能找到 nginx最新的稳定版1.18.0,然后执行pull命令

# docker pull nginx:1.18
1.18: Pulling from library/nginx
8559a31e96f4: Already exists 
9a38be3aab21: Pull complete 
522e5edd83fa: Pull complete 
2ccf5a90baa6: Pull complete 
Digest: sha256:159aedcc6acb8147c524ec2d11f02112bc21f9e8eb33e328fb7c04b05fc44e1c
Status: Downloaded newer image for nginx:1.18
docker.io/library/nginx:1.18

2、准备数据卷目录

了解docker中默认路径
conf
默认conf挂载目录: /etc/nginx/conf.d/  和 /etc/nginx/nginx.conf

html
/usr/share/nginx/html

log
/var/log/nginx

然后为这些目录准备好宿主机对应的目录作为数据卷

# mkdir -p /data/docker/nginx/conf/vhost
# mkdir -p /data/docker/nginx/logs
# mkdir -p /data/docker/nginx/html
# mkdir -p /data/docker/nginx/ssl

3、配置nginx.conf

# vi /data/docker/nginx/conf/ngin.conf

user nobody;
worker_processes 4; 
worker_cpu_affinity 0001 0010 0100 1000;
worker_rlimit_core 768m;
worker_rlimit_nofile 65536;

events {
    worker_connections 65535;
    use epoll;
    epoll_events 1024;
}

http {
    include 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" $request_time '
    '"$host" "$upstream_addr" "$upstream_status" "$upstream_response_time" '

    access_log off;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    server_names_hash_bucket_size 128;
    client_max_body_size 100m;
    client_body_buffer_size 1024k;
    client_header_timeout 250;
    max_ranges 10;
    send_timeout 450;
    keepalive_timeout 750;
    server_name_in_redirect off;
    server_tokens off;


    gzip on;
    gzip_buffers 4 16k;
    gzip_comp_level 9;
    gzip_http_version 1.0;
    gzip_min_length 800;
    gzip_proxied any;
    gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php image/jpeg image/gif image/png image/jpg;
    gzip_vary on;

    proxy_set_header Connection Keep-Alive;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


    include /etc/nginx/conf.d/*.conf;
}

# vi /data/docker/nginx/conf/vhost/test.conf

server {
    listen 80;
    server_name 192.168.100.181;
    location / {
        root   html;
        index  index.html index.htm;
    }
}

编辑一个静态网页,内容为 hello, nginx

# vi /data/docker/nginx/html/index.html

hello, nginx

4、运行nginx容器

docker run -d --name nginx-server --rm  -p 80:80 \
-v /data/docker/nginx/conf/vhost:/etc/nginx/conf.d:rw \
-v /data/docker/nginx/logs:/var/log/nginx:rw \
-v /data/docker/nginx/conf/ngin.conf:/etc/nginx/nginx.conf:rw \
-v /data/docker/nginx/html:/etc/nginx/html:rw \
nginx:1.18

5、访问网页

二、配置ssl 证书

1、修改nginx配置,添加ssl的内容

# vi /data/docker/nginx/conf/vhost/test.conf

server{
    listen 80;
	listen    443 ssl;
    server_name www.test.com;
	
	ssl_certificate /ssl/server.crt;
	ssl_certificate_key /ssl/server.key;
	
    location / {
        root   html;
        index  index.html index.htm;
    }
}

2、运行nginx容器

docker run -d --name nginx-server --rm  -p 80:80 -p 443:443 \
-v /data/docker/nginx/conf/vhost:/etc/nginx/conf.d:rw \
-v /data/docker/nginx/logs:/var/log/nginx:rw \
-v /data/docker/nginx/conf/ngin.conf:/etc/nginx/nginx.conf:rw \
-v /data/docker/nginx/html:/etc/nginx/html:rw \
-v /data/docker/nginx/ssl:/ssl:rw \
nginx:1.18

和前面相比较多了443端口的映射和ssl目录的映射。

准备好证书文件,复制到/data/docker/nginx/ssl 目录下即可。

本文内容到此结束。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值