其实docker的端口映射应该在先前的网络部门举办报告的,还记得docker0网络模式的道理吗?其实,在docker中,默认的选择是docker网桥模式,而实现网络通信也是依赖于NAT地点转换,简朴而言就是外部网络可以通过会见宿主机的ip地点团结端标语对docker内部的容器举办会见通信获取数据信息。
端口映射有两种呼吁方法,一种是插手选项-P,另一种是利用-p。-P暗示docker本成分派一个端口,合用于本身未划定而又制止与其他容器斗嘴端口的环境,-p则暗示指定端口,合用于自界说的环境,节减资源和优化打点的环境。
下面看看实际案例:
[root@localhost ~]# docker run -d -P httpd Unable to find image 'httpd:latest' locally latest: Pulling from library/httpd 123275d6e508: Pull complete e984dd982a6e: Pull complete 963280e5cf81: Pull complete 6faf90d050b2: Pull complete 962b56984bb0: Pull complete Digest: sha256:d5dc0d279039da76a8b490d89a5c96da83a33842493d4336b42ccdfbd36d7409 Status: Downloaded newer image for httpd:latest e7a9cda3fea1904401b274a35b51d93a23b95cd0c8e548bb4982e21e8586d657 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7a9cda3fea1 httpd "httpd-foreground" 5 seconds ago Up 4 seconds 0.0.0.0:32768->80/tcp charming_ride我们测试一下这个Apache处事是否乐成,从获取到乐成差不多就30s
利用小写实验一下:
[root@localhost ~]# docker run -d -p 54544:80 httpd 26d52f0d0a49a8c3b87aa4f4eb251eee080c9ba776902987e0173d7a290412d0 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26d52f0d0a49 httpd "httpd-foreground" 5 seconds ago Up 4 seconds 0.0.0.0:54544->80/tcp busy_khorana e7a9cda3fea1 httpd "httpd-foreground" 3 minutes ago Up 3 minutes 0.0.0.0:32768->80/tcp charming_ride测试验证:
看了都乐成了。接下来说说容器的互联。
容器互联容器互联是指通过容器的名称在容器间成立一条专门的网络通信地道从而实现容器的互联。在利用docker run 呼吁的时候利用--link选项就可以实现容器之间的互联通信。
名目为:--link name:alias
name——容器名
alias——这个毗连的别名
需要留意的是:容器互联是通过容器的名称来执行的,--name选项可以给容器建设一个友好的名称,这个名称是独一的,即不行反复。
详细案例演示:
1、建设容器
[root@localhost ~]# docker run -itd -P --name test1 CentOS /bin/bash Unable to find image 'centos:latest' locally latest: Pulling from library/centos 8a29a15cefae: Pull complete Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 Status: Downloaded newer image for centos:latest 9f2ce34c7867d8b159201f9a3521a28570a3843a8fca08a60f58b12ff75651882、建设吸收容器
[root@localhost ~]# docker run -itd -P --name test2 --link test1:test1 centos /bin/bash f3c2974dcd19796cd8a48ecaf398370f891887cbfb92a192e8d7e706ccbefd623、进入一个容器中举办测试(ping)
[root@localhost ~]# docker exec -it test2 /bin/bash [root@f3c2974dcd19 /]# ping test1 PING test1 (172.17.0.2) 56(84) bytes of data. 64 bytes from test1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.089 ms 64 bytes from test1 (172.17.0.2): icmp_seq=2 ttl=64 time=0.070 ms 64 bytes from test1 (172.17.0.2): icmp_seq=3 ttl=64 time=0.062 ms 64 bytes from test1 (172.17.0.2): icmp_seq=4 ttl=64 time=0.065 ms 64 bytes from test1 (172.17.0.2): icmp_seq=5 ttl=64 time=0.063 ms ^C --- test1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 13ms rtt min/avg/max/mdev = 0.062/0.069/0.089/0.014 ms需要留意的是,我们的容器需要是up的状态不然会碰着报错。
Linux公社的RSS地点:https://www.linuxidc.com/rssFeed.aspx