启动一个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.查看监听端口
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... */
赞赏
微信赞赏
支付宝赞赏