Docker端口映射【-P、-p】

1、网络管理

1.1、基础知识

1.1.1、Docker 网络实现方式

1、端口映射
 - 将容器内服务端口与宿主机端口关联在一起,通过"宿主机ip:宿主机port"达到访问容器服务效果

2、网络模式
- 借助于独立的docker网卡功能实现访问容器服务的效果

1.1.2、命令格式

docker -P|p [镜像名称]

1.1.3、-P、-p参数解析

-P(大写) 指的是容器应用PORT随机映射到宿主机上的PORT
 自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中自动随机选择,但是如果连续启动多个容器的话,则下一个容器的端口默认是当前容器占用端口号+1
 生产场景一般不使用随机映射,好处是由docker分配,宿主机端口不会冲突
-p(小写) 宿主机IP:宿主机PORT:容器PORT 宿主机IP不写表示"0.0.0.0",宿主机PORT不写表示随机端口,容器PORT必须指定,可以同时对多个端口进行映射绑定 指定端口映射,在标准化场景下使用频率高,

2、随机端口映射、指定端口映射实践

2.1、随机端口映射

2.1.1、启动容器

docker run --rm -d -P nginx

2.1.2、查看端口映射

]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                                     NAMES
bc5031ca1c0c   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   naughty_haslett

2.1.3、访问测试

2.2、指定端口映射

2.2.1、启动容器

# 固定端口
docker run --rm -d -p 192.168.10.19:8080:80 nginx
docker run --rm -d -p :8081:80 nginx

# 宿主机随机端口
docker run --rm -d -p 192.168.10.19::80 nginx
docker run --rm -d -p ::80 nginx

2.2.2、查看端口映射

]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS              PORTS                                     NAMES
8265659f96c2   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8081->80/tcp, :::8081->80/tcp     eager_nobel
89d94e902ea1   nginx     "/docker-entrypoint.…"   2 minutes ago        Up 2 minutes        0.0.0.0:32769->80/tcp, :::32769->80/tcp   amazing_banach
87334308e589   nginx     "/docker-entrypoint.…"   2 minutes ago        Up 2 minutes        192.168.10.19:32768->80/tcp               sleepy_merkle
6dbcb5d8bef4   nginx     "/docker-entrypoint.…"   2 minutes ago        Up 2 minutes        192.168.10.19:8080->80/tcp                hopeful_chatterjee

2.2.3、访问测试

2.3、多端口映射

2.3.1、启动容器命令

docker run --rm -d -p 8080:80 -p 8443:443 --name nginx-mul-port nginx

 

posted @ 2023-05-18 15:24  小粉优化大师  阅读(4378)  评论(0编辑  收藏  举报