1.安装nginx docker镜像

获取nginx官方镜像 

docker pull nginx
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

查看镜像库

docker images
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

使用nginx镜像来创建nginx容器实例

docker run --name nginx_my -p 80:80 -d nginx
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

run 创建容器实例

-- name 容器命名

-v 映射目录

-d 设置容器后台运行

-p 本机端口映射 将容器的80端口映射到本机的80端口

语句最后一个nginx是使用镜像的名称

创建容器成功后,启动nginx容器

访问 本机测试   127.0.0.1:80

 

2.将nginx关键目录映射到本机

首先在本机创建nginx的一些文件存储目录

 mkdir -p /root/nginx/conf /root/nginx/logs
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

logs: nginx日志目录

conf: nginx配置文件目录

查看nginx_my容器id

docker ps
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

将nginx-test容器配置文件copy到本地

docker cp 4f54ae11387b:/etc/nginx/nginx.conf /root/nginx/conf
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    

创建新nginx容器nginx-web并将logs,conf目录映射到本地

docker run -d -p 8899:80 --name nginx_reverse  -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx  nginx 
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

3.设置反向代理

进入到/root/conf/nginx.conf 添加如下即可

server{
       listen 80;
       charset utf-8;
       server_name _;

       location / {
          proxy_pass http://192.168.1.128:15672;
          proxy_redirect default;
       }
    }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

这样就可以用本机80端口代理本机15672端口了 

测试反向代理是否可用

直接使用80访问端口

 

4.踩过坑

1. docker运行nginx为什么要使用 daemon off
 

Docker 容器启动时,默认会把容器内部第一个进程,也就是pid=1的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出。

Docker未执行自定义的CMD之前,nginx的pid是1,执行到CMD之后,nginx就在后台运行,bash或sh脚本的pid变成了1。

所以一旦执行完自定义CMD,nginx容器也就退出了。

Nginx的docker仓库仔细查看说明,其实是有说明的.

将nginx容器停止后修改配置文件出现nginx启动不起来解决方式:

# 在命令后面添加 nginx-debug -g 'daemon off;'

docker run -d -p 8899:80 --name nginx_reverse  -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx  nginx nginx-debug -g 'daemon off;'
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

2. 修改配置文件后还是没有转发端口

这个可能是修改nginx配置文件后没有重启nginx, 需要重启nginx, 也就是重启docker nginx容器就可以

docker restart nginx_my
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐