docker容器端口映射

启动一个docker容器

docker run -d -it -p宿主机端口:容器端口 镜像:版本

 

1. 宿主机端口:容器端口

例子:docker run -d -it -p 80:80 nginx:latest

 

2. 宿主机ip1:宿主机端口:容器端口 (多个容器同时使用80端口)

#正常情况下,使用一个端口宿主机会占用一个端口。我们可以再添加一个ip地址(重启网卡后会消失)
ifconfig eth0:1 10.0.0.10/24 up

#多个容器使用宿主机的80端口映射到容器的80端口
[root@docker01 ~]# docker run -d -p 10.0.0.11:80:80 nginx:latest 
0fe60f7a75c3c93f623d5d8ba7de47b5d5039e5ee19295fb5eabb357e887d166

[root@docker01 ~]# docker run -d -p 10.0.0.10:80:80 nginx:latest 
db098d2c8bfd01b3d879bf9fb178946671488273904d5d4cc3fa5d0f1b37e44f

#查看Iptables规则,可以看到访问11和10两个ip都会转发到对应的容器ip
[root@docker01 ~]# iptables -t nat -L -n
Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
DNAT       tcp  --  0.0.0.0/0            10.0.0.11            tcp dpt:80 to:172.17.0.2:80
DNAT       tcp  --  0.0.0.0/0            10.0.0.10            tcp dpt:80 to:172.17.0.3:80

 

 

3.查看监听端口

docker容器端口映射

 

 

4.宿主机ip1::容器端口 随机端口映射

#不指定宿主机端口,随机生成一个端口映射到容器的80端口
[root@docker01 ~]# docker run -d -p 10.0.0.10::80 nginx:latest 
5adb87ec905d499e1dd215c52db91d48ad309856cf58d9d824cd7aba102ee41d

#随机端口范围32768-60999
[root@docker01 ~]# sysctl -a |grep rang
net.ipv4.ip_local_port_range = 32768	60999

[root@docker01 ~]# docker ps -a -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
5adb87ec905d        nginx:latest        "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes        10.0.0.10:32768->80/tcp   brave_shamir

 

5.宿主机ip1::容器端口/udp 使用udp协议做随机端口映射

[root@docker01 ~]# docker run -d -p ::80/udp nginx:latest
70dd6be1a7f3b1a02446f7bf1bd774417187a97673207dd77980d0342f92ef40

[root@docker01 ~]# docker ps -a -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                           NAMES
70dd6be1a7f3        nginx:latest        "nginx -g 'daemon of…"   22 seconds ago      Up 18 seconds       80/tcp, 0.0.0.0:32768->80/udp   charming_rosalind

 

6.多个端口映射

#将宿主机的80端口和3306端口映射到容器的80端口和3306端口
[root@docker01 ~]# docker run -d   -p 80:80 -p 3306:3306  nginx:latest 
760a41d58813cecb100ffc7abb61ce26fad2903cf60945078b2f8f7209b70639

[root@docker01 ~]# docker ps -a -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                        NAMES
760a41d58813        nginx:latest        "nginx -g 'daemon of…"   15 seconds ago      Up 14 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:3306->3306/tcp   inspiring_goodall

 

7. 端口范围映射

#将宿主机的90-96的端口映射到容器的80-86端口(数字必须相等,否则会报错)
[root@docker01 ~]# docker run -d   -p 90-96:80-86  nginx:latest 
6b77293c8e5c3aeeb2a326c063eeb7a219eaa7baa4c88690c100c94f57aed46d

[root@docker01 ~]# docker ps -a -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                                        NAMES
6b77293c8e5c        nginx:latest        "nginx -g 'daemon of…"   5 seconds ago       Up 4 seconds        0.0.0.0:90->80/tcp, 0.0.0.0:91->81/tcp, 0.0.0.0:92->82/tcp, 0.0.0.0:93->83/tcp, 0.0.0.0:94->84/tcp, 0.0.0.0:95->85/tcp, 0.0.0.0:96->86/tcp   romantic_goldstine/* Your code... */

 

返回首页

赞赏

微信赞赏支付宝赞赏

Docker

docker数据卷

2020-3-4 9:22:36

Docker

找回docker企业级仓库harbor仓库密码

2020-3-5 6:37:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索