一、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 目录下即可。
本文内容到此结束。