首页 > 编程知识 正文

docker容器ip自动分配,外部访问docker容器

时间:2023-05-05 16:05:20 阅读:59561 作者:2802

Docker是通过外部访问容器或者容器之间互联的方式来提供网络服务

容器启动后,可以在容器中运行使用-p或-p参数指定端口映射的网络APP应用程序。

注意:

主机上的一个端口只能映射到容器内部的一个端口。 例如,8080-80之后,8080-81不能

容器内部的端口可以通过宿主机上的多个端口进行映射,例如8080-80、8090-80、8099-80和8099-80

3358 www.Sina.com/http://www.Sina.com /小写字母p表示docker选择映射到容器中开放网络端口的特定宿端口。1)启动容器时,选择一个端口映射到容器内部开放端口上大写p表示docker随机选择要映射到容器中开放网络端口的宿主机端口。

例如,[ root @ docker-test~~ ] # docker run-ti-d-- name my-nginx-p 8088336080 docker.io/# nginx 2218 c 7d 88 CCC 917 FD 0a0EC 24 E6 d 81667 EB 588f 491 d 3730 deb 09289 DCF 6b 8125 [ root @ docker-test~] docker run-ti-d-name nginx 589237 ceec9D5 D1 de 045 a 5395 c 0d 4b 519 ACF 54e8c09 AFB 07 af 49 de 1b 06 d 71059 [根@ docker-test~dockerer sports names 589237 ceec 9d docker.io/nginx ' nginx-g ' daemon . '6secondsagoup5seconds0.0.0. 0:32770-80/TCP my nginx ' nginx-g ' daemon . ' aboutaminuteagoupaboutaminute0.0. 033608088-80/TCP my-nginx从上面可以看出,容器my-nginx的启动访问http://localhost/8088时,在容器my-nginx2启动时使用了-P。 您选择了宿主机的随机端口之一,并将其映射到容器内部的80个端口。 这里的随机端口是32770,访问http://localhost/32770就可以了

[ root @ docker-test~] # docker run-ti-d-- name my-nginx3- p 127.0.1:888:80 docker.io/nginxdebca5EC7dbb 770 ca 307 b 06309 b0e24 b81 b6BF 689 CB 11474 e C1 ba 187 F4 d 7802 c [ root @ docker-test~docker run-ti-d------ name # cker.io/nginx ba 72 a 93196 f 7e 55020105 b 90a 51d 2203 F9 cc 4d 09882 e 7848 ff 72 F9 c 43 d 81852 a [ root @ docker-test~] dockerpscontaineridimagecommandcreatedstatusportsnamesba 72 a 93196 f7docker.io/nginx ' nginx-g ' daemon. '2secondsagoup 1 TCP my-nginx 4d ebc a5 EC7dbb docker.io nginx ' nginx-g ' daemon . '3minutesagoup3minutes 127.0.0.13:888-80/TCP mm 绑定容器my-nginx3的主机外部ip可以访问http://127.0.0.1:8888或http://localhost :8888 (110 )。 访问http://192.168.10.214:8888将被拒绝! 如果绑定了容器my-nginx4的宿主机的外部ip为192.168.10.214且端口为9999,则访问http://192.168.10.214:9999或3333:999 访问http://127.0.0.1:9999 3358 www.Sina.com /

[ root @ docker-test~] # docker run-ti-d-- name my-nginx5- p 8099336080/TCP docker.io/nginx C08 e b29 e3c 0a 46386319 b 475 cc 95245 cc fbf 106e d 80 B1 f 75 d 104 F8 f 05 d0B3 e [ root @ docker-test~docker run-ti-d-------namy UDPdocker.io/nginx 992 a 48 CBD3ef0e 568 b 45 c 22 a 00389622 c2b 49 e 77 f 936 BC 0f 980718590 D5 b [ root @ docker-test至dockerpscontaineridimagecomander d3ef docker.io/nginx ' nginx-g ' daemon . '3secondsagoup2192.168.10.21433608077-80/UDP my-nginx6C08 e b29 e3c 0a

[ root @ docker-test~] # dockerportmy-nginx 580/TCP-0.0.033608099 [ root @ docker-test~] # docker inspect grep IP

创建docker容器时,已将端口映射到宿主机。 防火墙已关闭,但无法从外部访问宿主机端口吗?

这基本上是因为宿主机未打开ip传输功能,使得外部网络在访问宿主机上的相应端口时无法传输到Docker Container上的相应端口。

解决方案:

在Linux发行版中,默认情况下未启用ip传输功能。 这是个好办法。 因为大多数人不能通过ip传输。 但是,如果要安装Linux路由或VPN服务,我们必须打开此服务。

在Linux上打开ip传输的内核参数是在net.ipv4.ip_forward上检查是否打开ip传输。

# cat/proc/sys/net/IP v4/IP _ forward//0:未打开,1 :打开===============sysctl-wnet.IP v4.IP _ forward=1====================sysctl.conf net.IP v4.IP _ forward=1# ssward

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。