方式1:直接使用镜像启动

1. 获取镜像

  1. # 查看可用的稳定版本
  2. sudo docker search nginx
  3. sudo docker pull nginx
  4. sudo docker image ls |grep nginx

2. 启动容器

  1. sudo docker run -di \
  2. --name=nginx \
  3. -p 80:80 \
  4. nginx
  5. sudo docker start nginx
  6. sudo docker restart nginx
  7. sudo docker stop nginx
  8. sudo docker rm nginx

3. 验证

Web UI:http://192.168.56.101

方式2:Dockerfile构建启动

说明:Nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。也就是说Nginx本来只支持HTTP,添加stream模块后就支持TCP/UDP了。比如在内网有一个MySQL服务,想暴露到公网上去使用,就可以通过Nginx代理的方式来进行内网MySQL的访问。另外:MySQL为多主架构时,也可使用Nginx为其提供负载均衡能力。

1. 编写Dockerfile

  1. mkdir -p /opt/docker & cd /opt/docker
  2. wget http://nginx.org/download/nginx-1.16.1.tar.gz
  3. vi nginx.Dockerfile

内容如下:

  1. FROM centos
  2. LABEL maintainer="polaris<450733605@qq.com>"
  3. RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make openssl-devel
  4. ADD nginx-1.16.1.tar.gz /usr/local/src
  5. RUN cd /usr/local/src/nginx-1.16.1 && \
  6. ./configure --prefix=/apps/nginx \
  7. --user=www \
  8. --group=www \
  9. --with-http_ssl_module \
  10. --with-http_v2_module \
  11. --with-http_realip_module \
  12. --with-http_stub_status_module \
  13. --with-http_gzip_static_module \
  14. --with-pcre \
  15. --with-stream \
  16. --with-stream_ssl_module \
  17. --with-stream_realip_module && \
  18. make && make install
  19. ADD nginx.conf /apps/nginx/conf/nginx.conf
  20. RUN groupadd www -g 2000 && useradd www -u 2000 -g www -s /sbin/nologin && mkdir -p /data/nginx/html && chown -R www:www /apps/nginx && ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
  21. RUN echo "nginx-stream page(Dockerfile build)" > /data/nginx/html/index.html
  22. EXPOSE 80 443
  23. CMD nginx -g "daemon off;"

2. 配置

  1. cd /opt/docker
  2. # 解压软件包获取默认配置
  3. tar -xvf nginx-1.16.1.tar.gz
  4. cp nginx-1.16.1/conf/nginx.conf ./
  5. vi nginx.conf

内容如下:

  1. # 修改1:新增用户配置
  2. user www;
  3. worker_processes 1;
  4. events {
  5. worker_connections 1024;
  6. }
  7. http {
  8. include mime.types;
  9. default_type application/octet-stream;
  10. sendfile on;
  11. keepalive_timeout 65;
  12. server {
  13. listen 80;
  14. server_name localhost;
  15. location / {
  16. # 修改2:更新root路径
  17. root /data/nginx/html;
  18. index index.html index.htm;
  19. }
  20. error_page 500 502 503 504 /50x.html;
  21. location = /50x.html {
  22. root html;
  23. }
  24. }
  25. }

3. 构建镜像

  1. # 构建镜像
  2. sudo docker build -f nginx.Dockerfile -t nginx-stream:1.16.1 .
  3. # 查看镜像
  4. sudo docker images | grep nginx-stream
  5. sudo docker images -f reference=nginx-stream
  6. sudo docker history nginx-stream:1.16.1
  7. # 删除虚悬镜像(使用build命令根据Dockerfile进行构建镜像容易产生虚悬镜像)
  8. sudo docker rmi $(docker images -q -f dangling=true)

4. 启动容器

  1. sudo docker run -itd --name nginx-stream -p 80:80 nginx-stream:1.16.1
  2. sudo docker start nginx-stream
  3. sudo docker restart nginx-stream
  4. sudo docker stop nginx-stream
  5. sudo docker rm nginx-stream

5. 验证

  1. sudo docker ps |grep nginx
  2. # 进入终端
  3. sudo docker exec -it nginx-stream /bin/bash
  4. # 容器日志查看
  5. sudo docker logs nginx-stream
  6. sudo docker logs -f -t --tail=50 nginx-stream

Web UI:http://192.168.56.101