Public Repository

Last pushed: 5 months ago
Short Description
Short description is empty for this repo.
Full Description

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 bclinux2020/nginx:latest
    
  • 也可以通过docker build本地建立nginx镜像:

      git clone git@gitlab.cmss.com:linux/bclinux-dockerfiles.git
     cd bclinux-dockerfiles/nginx/bclinux7
     docker build -t bclinux2020/nginx:latest .
    

运行

  • Docker

      docker run -d  --name nginx bclinux2020/nginx:latest
    
  • Docker Compose

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

主机上访问服务器

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

# docker run -d --name nginx -P bclinux2020/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  bclinux2020/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 \
 bclinux2020/nginx:latest

或者使用 Docker Compose:

version: '2'

services:
  nginx:
    image: 'bclinux2020/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: 'bclinux2020/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        bclinux2020/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        bclinux2020/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        bclinux2020/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 。

Docker Pull Command
Owner
bclinux2020