博客博客
  • 介绍
  • 链表反转
  • 排序算法
  • 二叉树

    • 介绍
    • 深度算法
  • 加密算法

    • 非对称加密
    • 摘要算法
    • 对称加密
  • 激活Windows 11
  • ASP.NET Core 健康检查
  • 获取程序集根目录
  • 闭包
  • CSS 单位指南:CSS em、rem、vh、vw 等详解
  • 自定义Code First约定
  • .NET安装本地化的智能提示
  • 免费开通域名企业邮箱
  • GRPC
  • Hexo生成github page
  • .Net Core日志管理之Log4net
  • linux下更新jenkins
  • MySQL的四种事务隔离级别
  • 发布NuGet包
  • rimraf命令
  • Ubuntu基础操作
  • Ubuntu安装jenkins
  • Vscode无法执行npm等脚本的问题
  • Json

    • Countries
  • 简介
  • 设计原则
  • 行为型模式

    • 介绍
    • 策略模式
  • 创建型模式

    • 介绍
    • 单例模式
  • 结构型模式

    • 介绍
  • Docker指南

    • 介绍
    • 安装
  • Docker实例

    • 介绍
    • docker安装consul
    • docker安装elasticsearch
    • docker安装gitlab-runner
    • docker安装gitlab
    • docker安装jenkins
    • docker安装kafka
    • docker安装mongo
    • docker安装mysql
    • docker安装nginx
    • docker安装portainer
    • docker安装rabbitmq
    • docker安装redis
    • docker安装teamcity
  • Docker教程

    • Docker命令大全
    • docker nginx添加端口映射
    • docker服务管理
  • Docker-Compose

    • 网络配置
    • service name和container name
  • 世界上的另一个我
  • 计划生育宣传标语
  • IT术语
  • Single is simple, double is trouble
  • 矿泉水、纯净水、天然水究竟有啥区别
  • 联系
  • 捐赠
GitHub
  • 介绍
  • 链表反转
  • 排序算法
  • 二叉树

    • 介绍
    • 深度算法
  • 加密算法

    • 非对称加密
    • 摘要算法
    • 对称加密
  • 激活Windows 11
  • ASP.NET Core 健康检查
  • 获取程序集根目录
  • 闭包
  • CSS 单位指南:CSS em、rem、vh、vw 等详解
  • 自定义Code First约定
  • .NET安装本地化的智能提示
  • 免费开通域名企业邮箱
  • GRPC
  • Hexo生成github page
  • .Net Core日志管理之Log4net
  • linux下更新jenkins
  • MySQL的四种事务隔离级别
  • 发布NuGet包
  • rimraf命令
  • Ubuntu基础操作
  • Ubuntu安装jenkins
  • Vscode无法执行npm等脚本的问题
  • Json

    • Countries
  • 简介
  • 设计原则
  • 行为型模式

    • 介绍
    • 策略模式
  • 创建型模式

    • 介绍
    • 单例模式
  • 结构型模式

    • 介绍
  • Docker指南

    • 介绍
    • 安装
  • Docker实例

    • 介绍
    • docker安装consul
    • docker安装elasticsearch
    • docker安装gitlab-runner
    • docker安装gitlab
    • docker安装jenkins
    • docker安装kafka
    • docker安装mongo
    • docker安装mysql
    • docker安装nginx
    • docker安装portainer
    • docker安装rabbitmq
    • docker安装redis
    • docker安装teamcity
  • Docker教程

    • Docker命令大全
    • docker nginx添加端口映射
    • docker服务管理
  • Docker-Compose

    • 网络配置
    • service name和container name
  • 世界上的另一个我
  • 计划生育宣传标语
  • IT术语
  • Single is simple, double is trouble
  • 矿泉水、纯净水、天然水究竟有啥区别
  • 联系
  • 捐赠
GitHub
  • Docker指南

    • 介绍
    • 安装
  • Docker实例

    • 介绍
    • docker安装consul
    • docker安装elasticsearch
    • docker安装gitlab-runner
    • docker安装gitlab
    • docker安装jenkins
    • docker安装kafka
    • docker安装mongo
    • docker安装mysql
    • docker安装nginx
    • docker安装portainer
    • docker安装rabbitmq
    • docker安装redis
    • docker安装teamcity
  • Docker教程

    • Docker命令大全
    • docker nginx添加端口映射
    • docker服务管理
  • Docker-Compose

    • 网络配置
    • service name和container name

docker nginx添加端口映射

提示

一般我们通过docker运行nginx容器的时候,都只会将80或者443端口映射到宿主机,因为不知道后期在实现反向代理的时候具体会指定什么端口号,所以大部分时候会在后期修改端口映射

假如在运行容器时执行的命令如下

# -p 80:80  端口映射:容器80端口映射到宿主机的80端口
docker run --name nginx -p 80:80 -v /etc/nginx/conf.d:/etc/nginx/conf.d -d nginx

如果我们想实现反向代理,代理监听端口只有80端口才能被访问,因为非80端口没有做宿主机映射,即便实现了反向代理,外部也不能通过该端口访问到容器内的代理地址。如果需要被外部访问,可以有以下几种方式:

移除容器然后添加端口映射重新运行

# 停止容器。删除容器之前必需先停止
docker stop nginx

docker rm nginx

# -p 9797:9797  假设9797就是我们实现反向代理需要监听的端口
docker run --name nginx -p 80:80 -p 9797:9797 -v /etc/nginx/conf.d:/etc/nginx/conf.d -d nginx

修改容器配置添加端口映射

首先找到容器ID

执行命令

# nginx 容器名称
docker inspect nginx

# 或者

docker ps

输出

[
    {
        "Id": "c7d153b66564a7cb2157d8582d4018d60882ac144192174e92302f1c8c380b43", // hash_of_the_container
        "Created": "2020-08-21T09:41:36.597993005Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
...

// 或者

CONTAINER ID        IMAGE          ...        NAMES
c7d153b66564        nginx          ...        nginx

停止容器

修改之前一定要先停掉容器,否则自动还原

docker stop nginx

修改配置文件hostconfig.json和config.v2.json

容器路径一般在/var/lib/docker/containers/目录下面

cd /var/lib/docker/containers/c7d153b66564a7cb2157d8582d4018d60882ac144192174e92302f1c8c380b43 # container id
vim hostconfig.json

找到如下配置节点

"PortBindings":{
    "80/tcp":[
        {
            "HostIp": "",
            "HostPort": "80"
        }
    ]
}
...

键盘按下i切换为文本输入模式,添加映射端口

"PortBindings":{
    "80/tcp":[
        {
            "HostIp": "",
            "HostPort": "80"
        }
    ],
    "9797/tcp":[
        {
            "HostIp": "",
            "HostPort": "9797"
        }
    ]
}
...

修改完成后按下ESC,然后输入:wq保存文件并退出编辑模式

然后同路径下打开config.v2.json文件,找到ExposedPorts节点并添加映射端口

"ExposedPorts": {
    "80/tcp": {},
    "9797/tcp": {}
},
...

保存、退出、重启容器

sudo systemctl restart docker.service # 重启docker服务
docker start nginx

相关链接

Docker给nginx添加端口映射

Prev
Docker命令大全
Next
docker服务管理