Docker部署的nginx如何添加端口映射

本文介绍如何在Docker中为已部署的Nginx服务添加新的端口映射。首先需要停止容器并修改配置文件,然后添加新的端口映射并重启服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker部署nginx之后,运行一段时间之后需要增加端口号映射

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

停掉服务

docker stop 479 

2.修改配置文件

cd /var/lib/docker/containers/4790a78a8f29c6bf78481d3c9c3de01f03ff84da2804629d394a314c84c49c44

479开头的是我服务器上的nginx配置文件

vim hostconfig.json

 

443是新添加的端口

vi config.v2.json

 ExposedPorts 添加映射端口

 

3、服务重启

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

docker start nginx # 容器名 # 启动容器

### Docker 部署服务时的端口映射配置 当使用 Docker 容器化应用程序时,容器中的应用可能运行在一个特定的端口上,默认情况下外部网络无法直接访问这些端口。为了使宿主机或其他远程客户端能够连接到容器内运行的服务,需要设置端口映射。 #### 理解容器端口与宿主机端口的关系 容器有自己的独立网络命名空间,在此环境中启动的应用程序监听的是容器内部的虚拟网卡上的某个端口。如果希望外界能通过宿主机来访问容器里的服务,则需建立从宿主机的一个公开端口到容器私有端口之间的转发关系[^1]。 #### 实现端口映射的方法 对于大多数情况来说,可以通过 `-p` 或 `--publish` 参数向 docker run 命令传递一对或多对 "hostPort:containerPort" 来完成端口绑定操作。例如: ```bash docker run -d \ --name some-mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -p 3306:3306 \ mysql:tag ``` 上述命令将会把 MySQL 数据库默认使用的 3306 端口暴露给宿主机相同编号的端口。这意味着任何尝试连接至宿主机 IP 地址加上 3306 的请求都会被重定向到名为 `some-mysql` 的容器实例所托管的那个数据库服务器上去处理。 另外一种场景是在某些特殊需求下更改容器内部服务原本占用的端口号再做映射。比如调整 Seafile Web UI 默认监听 HTTP 协议下的第 80 号端口为另一个数值后再将其关联到物理机相应的开放接口之上。这通常涉及到编辑应用自身的配置文件并将修改后的版本挂载回镜像之中作为新的参数输入源[^2]。 #### 使用 Docker Compose 进行复杂多服务架构下的端口管理 随着项目规模的增长以及微服务体系结构的发展趋势日益明显,单纯依靠单条指令难以满足复杂的业务逻辑要求。此时可以考虑采用官方推荐的方式——编写 YAML 文件定义多个相互依赖的服务及其属性(包括但不限于环境变量、卷路径、链接关系等),其中也涵盖了对外提供 API 访问权限所需的端口设定部分。下面是一个简单的例子展示如何利用 compose 工具简化这一过程: ```yaml version: '3' services: web: image: nginx ports: - "8080:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example ports: - "3307:3306" ``` 这段声明式的语法使得开发者只需维护一份文档即可轻松掌控整个集群级别的资源分配状况,极大提高了工作效率的同时降低了人为失误的风险概率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值