方式1:直接使用镜像启动
1. 获取镜像
# 查看可用的稳定版本sudo docker search nginxsudo docker pull nginxsudo docker image ls |grep nginx
2. 启动容器
sudo docker run -di \--name=nginx \-p 80:80 \nginxsudo docker start nginxsudo docker restart nginxsudo docker stop nginxsudo 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
mkdir -p /opt/docker & cd /opt/dockerwget http://nginx.org/download/nginx-1.16.1.tar.gzvi nginx.Dockerfile
内容如下:
FROM centosLABEL maintainer="polaris<450733605@qq.com>"RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make openssl-develADD nginx-1.16.1.tar.gz /usr/local/srcRUN cd /usr/local/src/nginx-1.16.1 && \./configure --prefix=/apps/nginx \--user=www \--group=www \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-pcre \--with-stream \--with-stream_ssl_module \--with-stream_realip_module && \make && make installADD nginx.conf /apps/nginx/conf/nginx.confRUN 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/nginxRUN echo "nginx-stream page(Dockerfile build)" > /data/nginx/html/index.htmlEXPOSE 80 443CMD nginx -g "daemon off;"
2. 配置
cd /opt/docker# 解压软件包获取默认配置tar -xvf nginx-1.16.1.tar.gzcp nginx-1.16.1/conf/nginx.conf ./vi nginx.conf
内容如下:
# 修改1:新增用户配置user www;worker_processes 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {# 修改2:更新root路径root /data/nginx/html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
3. 构建镜像
# 构建镜像sudo docker build -f nginx.Dockerfile -t nginx-stream:1.16.1 .# 查看镜像sudo docker images | grep nginx-streamsudo docker images -f reference=nginx-streamsudo docker history nginx-stream:1.16.1# 删除虚悬镜像(使用build命令根据Dockerfile进行构建镜像容易产生虚悬镜像)sudo docker rmi $(docker images -q -f dangling=true)
4. 启动容器
sudo docker run -itd --name nginx-stream -p 80:80 nginx-stream:1.16.1sudo docker start nginx-streamsudo docker restart nginx-streamsudo docker stop nginx-streamsudo docker rm nginx-stream
5. 验证
sudo docker ps |grep nginx# 进入终端sudo docker exec -it nginx-stream /bin/bash# 容器日志查看sudo docker logs nginx-streamsudo docker logs -f -t --tail=50 nginx-stream
Web UI:http://192.168.56.101
