Docker中搭建nginx服务(一)

1. 下载nginx的Docker镜像

在Docker Hub有很多Nginx镜像,可以通过 docker search nginx查看,如下:

[.. docker_nginx]# docker search nginx
NAME                               DESCRIPTION                                     STARS  OFFICIAL
nginx                              Official build of Nginx.                        13490 [OK]
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1840   
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   780    
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   122    
bitnami/nginx                      Bitnami nginx Docker Image                      87     
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   84     
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   71     
alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from sou…   70     
...   

可以看到各种功能的nginx镜像和每个镜像的星级,并有一个是否为官方提供的镜像的标识。我这里下载官方镜像来使用。

通过 docker pull nginx命令可以将nginx官方镜像下载下来,下载成功,通过 docker images进行查看,如下:

[.. docker_nginx]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
nginx                 latest              0901fa9da894        9 days ago          132MB

下载成功后,可以看到该镜像的各种信息,下面就可以开始使用了。

2. 部署nginx工程

现在nginx可以直接通过 docker run跑起来,但使用的都是官方默认的配置文件、日志路径等。如果想在现实中使用,需要在本地配置 nginx.conf文件、在本地放好证书(如果搭建HTTPS服务)和并在本地准备好日志目录。下面是我建的一个工程如下:

[.. docker_nginx]# tree
/usr/local/docker_nginx/
├── conf
│   └── nginx.conf
├── html
│   └── index.html
├── logs
│   ├── error.log
│   ├── http.log
│   └── https.log
└── ssl
    ├── certs.key
    └── certs.pem

nginx.conf 的配置如下:

server {
        listen       80;
        server_name  xxx

        access_log  logs/http.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }


    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  xx;

        access_log  logs/https.log  main;

        ssl_certificate      /etc/ssl/cert/certs.pem;
        ssl_certificate_key  /etc/ssl/cert/certs.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

配置好这些后,就可以通过docker启动nginx了。

在运行docker之前,我们要了解nginx根目录的路径,这样方便准确将本地文件绑定到docker文件系统中。官方提供的nginx根目录是/etc/nginx/,因此运行docker的命令为:

docker run -p 80:80 -p 443:443 -v /usr/local/docker_nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/docker_nginx/ssl:/etc/ssl/cert -v /usr/local/docker_nginx/logs:/etc/nginx/logs -v /usr/local/docker_nginx/html:/etc/nginx/html --name fengshenyun -d nginx

该命令简单解释下:

  • -v 80:80:对外开放80端口
  • -v 443:443:对外开放443端口
  • -v /usr/local/docker_nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将本地的nginx.conf文件绑定到docker对应的文件上,最后运行的是本地这个文件,后面几个-v都是如此。
  • -d nginx:启动nginx镜像,这个镜像名就是通过 docker images命令看到的名字。

3. 验证

通过 docker ps命令可以看到正在运行的nginx,如下:

[.. docker_nginx]# docker ps 
CONTAINER ID 	IMAGE	COMMAND	         CREATED		  STATUS	     PORTS	       NAMES
bd66ab32d468   nginx    "/docker-e.."    25 minutes ago   Up 25 minutes  0.0.0.0...    fengshenyun

请求HTTP服务:

[.. docker_nginx]# curl "http://xx/index.html"
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and

请求HTTPS服务:

[.. docker_nginx]# curl "https://xx/index.html"
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and

验证成功、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值