Docker 容器映射, 容器启动成功,外部访问不到问题解决

本文介绍了在Docker中遇到容器启动正常但外部无法访问的问题,通过检查桥接模式和系统设置,成功解决了这一问题。在修复后,容器对外部访问变得正常。

使用命令查看:
桥接模式没有打开的两个报错

[root@localhost bin]# docker info
Containers: 11
 Running: 3
 Paused: 0
 Stopped: 8
Images: 8
Server Version: 1.13.1
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins: 
 Volume: local
 Network
Docker 中,通过端口映射可以将容器内部的服务暴露给外部网络,从而允许外部访问容器内的应用。以下是配置 Docker 容器端口映射的详细方法: ### 启动容器时配置端口映射 在运行容器时,可以通过 `-p` 或 `-P` 参数指定端口映射规则。其中: - 使用 `-p` 参数可以指定具体的宿主机端口映射容器的端口。例如,将宿主机的 8080 端口映射容器的 80 端口: ```bash docker run -d -p 8080:80 nginx ``` 这样,外部可以通过访问 `http://<host-ip>:8080` 来访问容器中的 Nginx 服务[^1]。 - 使用 `-P` 参数(大写 P)可以让 Docker 自动为容器分配一个随机的宿主机端口,并将其映射容器内部开放的端口。例如: ```bash docker run -d -P nginx ``` Docker 会为容器的 80 端口分配一个宿主机上的随机端口(如 32770),外部可以通过 `http://<host-ip>:32770` 进行访问[^3]。 ### 查看容器的端口映射信息 若需要确认某个容器的端口映射情况,可以使用 `docker port` 命令。例如,查看容器 ID 为 `51e608231496` 的端口映射信息: ```bash docker port 51e608231496 ``` 输出结果会显示容器端口与宿主机端口之间的映射关系,如: ``` 8080/tcp -> 0.0.0.0:8080 8080/tcp -> [::]:8080 ``` 这表示容器的 8080 端口已映射到宿主机的所有 IPv4 和 IPv6 地址的 8080 端口[^2]。 ### 注意事项 - 确保宿主机的防火墙规则允许外部访问映射的端口。如果使用的是 `firewalld`,需要添加相应的端口放行规则。例如: ```bash sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload ``` - 如果宿主机上运行了多个容器,或者有多个服务需要映射不同的端口,需确保端口不冲突。 - Docker 会自动创建 `docker0` 网络接口用于容器网络通信。如果宿主机的网络配置中未指定 `ZONE`,Docker 会使用默认的 `public` 区域进行网络配置[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值