方式1:直接使用镜像启动
1. 获取镜像
# 查看可用的稳定版本
sudo docker search nginx
sudo docker pull nginx
sudo docker image ls |grep nginx
2. 启动容器
sudo docker run -di \
--name=nginx \
-p 80:80 \
nginx
sudo docker start nginx
sudo docker restart nginx
sudo docker stop nginx
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
mkdir -p /opt/docker & cd /opt/docker
wget http://nginx.org/download/nginx-1.16.1.tar.gz
vi nginx.Dockerfile
内容如下:
FROM centos
LABEL maintainer="polaris<450733605@qq.com>"
RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make openssl-devel
ADD nginx-1.16.1.tar.gz /usr/local/src
RUN 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 install
ADD nginx.conf /apps/nginx/conf/nginx.conf
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
RUN echo "nginx-stream page(Dockerfile build)" > /data/nginx/html/index.html
EXPOSE 80 443
CMD nginx -g "daemon off;"
2. 配置
cd /opt/docker
# 解压软件包获取默认配置
tar -xvf nginx-1.16.1.tar.gz
cp 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-stream
sudo docker images -f reference=nginx-stream
sudo 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.1
sudo docker start nginx-stream
sudo docker restart nginx-stream
sudo docker stop nginx-stream
sudo docker rm nginx-stream
5. 验证
sudo docker ps |grep nginx
# 进入终端
sudo docker exec -it nginx-stream /bin/bash
# 容器日志查看
sudo docker logs nginx-stream
sudo docker logs -f -t --tail=50 nginx-stream
Web UI:http://192.168.56.101