插件窝 干货文章 docker端口映射怎么做

docker端口映射怎么做

端口 映射 宿主机 Docker 393    来源:    2025-04-06

Docker端口映射详解

端口映射是Docker容器与宿主机通信的重要机制,允许将容器内部的端口暴露给外部网络。以下是Docker端口映射的详细说明和操作方法:

基本端口映射语法

docker run -p [HOST_PORT]:[CONTAINER_PORT] [IMAGE]

常见端口映射方式

1. 将容器端口映射到宿主机指定端口

docker run -p 8080:80 nginx
  • 将容器内部的80端口映射到宿主机的8080端口

2. 将容器端口映射到宿主机随机端口

docker run -p 80 nginx
  • Docker会自动分配一个宿主机的高位端口(32768-60999)

3. 指定宿主机IP和端口

docker run -p 192.168.1.100:8080:80 nginx
  • 只允许通过192.168.1.100的8080端口访问容器的80端口

4. 映射多个端口

docker run -p 8080:80 -p 8443:443 nginx

5. 映射UDP端口

docker run -p 53:53/udp dns-server

查看端口映射

docker port [CONTAINER]

查看特定容器的端口映射情况

docker ps

查看运行中容器的端口映射(在PORTS列)

使用Docker Compose的端口映射

在docker-compose.yml文件中:

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

注意事项

  1. 确保宿主机端口没有被其他服务占用
  2. 生产环境中建议限制访问IP范围
  3. 防火墙可能需要相应配置
  4. 在Windows/Mac的Docker Desktop中,localhost可直接访问映射端口
  5. 在Linux中,可能需要使用0.0.0.0或特定IP地址

高级用法

端口范围映射

docker run -p 8000-9000:8000-9000 myapp

使用宿主机的网络模式(不推荐)

docker run --network host nginx

此时容器直接使用宿主机的网络栈,无需端口映射

通过以上方法,您可以灵活地配置Docker容器的端口映射,满足不同场景下的网络访问需求。