BCLinux 容器应用镜像使用手册-Nginx


  • BCLinux Developers

    BCLinux 容器应用镜像-Nginx

    nginx 是什么?

    nginx ("engine x") 是一个开源的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

    • 作为 web 服务器:相比较于 Apache,nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 nginx 尤为受到虚拟主机提供商的欢迎,能够支持高达 50000 个并发的连接数的响应。

    • 作为负载均衡服务器:nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP 代理服务器对外惊醒服务,nginx 用 C 语言编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

    • 作为邮件代理服务器:nginx同时也是一个非常优秀的邮件代理服务器。(最早开发这个产品的目的之一也是作为邮件代理服务器)。

    • Nginx安装非常简单,配置文件非常简介(还能够支持perl语法 ),Bugs非常少的服务器,Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数月也不需要重新启动。

    • 能够在不间断服务的情况下进行软件版本平滑升级。

    安装

    • 从BCLinux提供的镜像仓库拉取最新的 nginx 容器镜像:

        docker pull bclinux/nginx:latest
      
    • 也可以通过docker build本地建立nginx镜像:

        docker build -t bclinux/nginx:latest git@gitlab.cmss.com:linux/bclinux-docker-nginx.git
      

    运行

    • Docker

        docker run --name nginx bclinux/nginx:latest
      
    • Docker Compose

      version: '2'
      
        services:
          nginx:
          image: 'bclinux/nginx:latest'
          ports:
            - '80:80'
      

    主机上访问服务器

    如果要从主机访问 web 服务器,用户可以使用 docker 将容器中暴露的 80 及 443 端口映射到主机上的随机端口:

    # docker run -d --name nginx -P bclinux/nginx:latest
    

    运行 docker port 查看随机分配的端口:

    # docker port nginx
    443/tcp -> 0.0.0.0:32776
    80/tcp -> 0.0.0.0:32777
    

    用户也可以指定映射的端口:

    # docker run -d -p 80:80 -p 8443:443  bclinux/nginx:latest
    

    这样就可以通过本机的 80 端口访问 nginx (http://YOUR-HOST-IP:80):

    数据持久化

    默认情况下如果删除容器,该容器中 nginx 配置和部署文件都将丢失,为了避免这种情况发生,本镜像可以通过映射数据卷的方式来保证数据的不丢失。

    nginx 镜像中的 /usr/share/nginx/html 目录用于存放部署文件。
    配置文件 nginx.conf 默认包含了 /etc/nginx/conf.d 目录中所有 *.conf。
    用户可以挂载本地目录(分别包含自定义虚拟主机配置文件和部署文件)到容器的/etc/nginx/conf.d 和 /usr/share/nginx/html:

    # docker run -d \
     -v /path/to/nginx-persistence/conf.d:/etc/nginx/conf.d \
     -v /path/to/nginx-persistence/html:/usr/share/nginx/html \
     bclinux/nginx:latest
    

    或者使用 Docker Compose:

    version: '2'
    
    services:
      nginx:
        image: 'bclinux/nginx:latest'
        ports:
          - '8080:80'
          - '8443:443'
        volumes:
          - /path/to/nginx-persistence/conf.d:/etc/nginx/conf.d
          - /path/to/nginx-persistence/html:/usr/share/nginx/html
    

    添加配置文件后,需要重启 nginx 容器使配置生效:

    # docker restart nginx
    

    或者使用 Docker Compose:

    # docker-compose restart nginx
    

    使用 Docker Compose

    Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具。使用 Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。
    例如,可以通过本镜像启动一个 ngin 容器,首先创建 Docker Compose 配置文件 docker-compose.yml,内容如下:

    version: '2'
    
    services:
      nginx:
        restart: always
        image: 'bclinux/nginx:latest'
        ports:
          - '80'
          - '443'
    

    通过容器就可以直接启动容器:

    docker-compose up -d
    

    通过scale参数可以弹性增加/减少容器的数量,例如下面命令将数量增加到3个:

    # docker-compose scale nginx=3
    Creating nginx_nginx_1 ... 
    Creating nginx_nginx_2 ... 
    Creating nginx_nginx_3 ... 
    Creating nginx_nginx_1 ... done
    Creating nginx_nginx_2 ... done
    Creating nginx_nginx_3 ... done
    

    查看:

    # docker ps
    CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                           NAMES
    d539dd4cc27d        bclinux/nginx:latest    "/bin/sh -c 'nginx..."   33 seconds ago      Up 32 seconds       0.0.0.0:32776->80/tcp, 0.0.0.0:32775->443/tcp   nginx_nginx_3
    08e9ad306dbf        bclinux/nginx:latest    "/bin/sh -c 'nginx..."   33 seconds ago      Up 32 seconds       0.0.0.0:32774->80/tcp, 0.0.0.0:32773->443/tcp   nginx_nginx_2
    05f84280d807        bclinux/nginx:latest    "/bin/sh -c 'nginx..."   34 seconds ago      Up 31 seconds       0.0.0.0:32778->80/tcp, 0.0.0.0:32777->443/tcp   nginx_nginx_1
    

    查看日志

    nginx 容器镜像将容器的日志发送到 stdout,查看日志:

    # docker logs nginx
    

    或者使用 Docker Compose:

    # docker-compose logs nginx
    

    用户也可以使用 --log-driver 选项配置容器的日志驱动,默认情况下,--log-driver 配置值为 json-file 。


登录后回复
 

与 BC-LINUX 的连接断开,我们正在尝试重连,请耐心等待