插件窝 干货文章 docker的容器怎么映射端口

docker的容器怎么映射端口

端口 映射 宿主机 容器 403    来源:    2025-04-28

Docker容器端口映射指南

在Docker中,端口映射是将容器内部的端口绑定到宿主机端口的过程,使得外部可以访问容器内运行的服务。以下是几种常见的端口映射方法:

1. 运行容器时映射端口

使用-p--publish参数:

docker run -p [宿主机端口]:[容器端口] [镜像名]

示例:

docker run -p 8080:80 nginx

这将把容器内部的80端口映射到宿主机的8080端口。

2. 映射多个端口

docker run -p 8080:80 -p 3306:3306 mysql

3. 指定IP地址

docker run -p 127.0.0.1:8080:80 nginx

这样只有本地主机可以访问8080端口。

4. 随机映射端口

docker run -P nginx

使用大写的-P参数,Docker会自动将容器中所有EXPOSE的端口映射到宿主机的高位随机端口。

5. 查看端口映射

docker port [容器名或ID]

6. 在Docker Compose中映射端口

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
      - "8443:443"

7. 指定协议

默认是TCP协议,也可以指定UDP:

docker run -p 8080:80/udp nginx

注意事项

  1. 如果宿主机端口已经被占用,映射会失败
  2. 在Linux上,映射到低于1024的端口需要root权限
  3. 使用-P时,容器必须通过EXPOSE指令声明要暴露的端口
  4. 在Windows和Mac上,Docker运行在虚拟机中,需要通过虚拟机IP访问

高级用法

范围映射

docker run -p 8000-9000:80 nginx

这将把容器80端口映射到宿主机8000-9000范围内的随机端口。

网络模式

不同的网络模式会影响端口映射行为: - bridge(默认):端口映射生效 - host:直接使用主机网络,无需映射 - none:无网络访问

希望这些信息能帮助你正确配置Docker容器的端口映射!