首先外网能够ping通容器的宿主机例如我的容器宿主机是192.168.40.131
C:\Users\jiang>ping 192.168.40.131
正在 Ping 192.168.40.131 具有 32 字节的数据:
来自 192.168.40.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.40.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.40.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.40.131 的回复: 字节=32 时间<1ms TTL=64
192.168.40.131 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
C:\Users\jiang>
为了方便实验的进程建议关闭防火墙以及selinux
[root@linux ~]# systemctl stop firewalld.service
[root@linux ~]# systemctl disable firewalld.service
[root@linux ~]# sed -ri '/SELINUX=enforcing/cSELINUX=disabled' /etc/sysconfig/selinux
[root@linux ~]# setenforce 0
开启linux的包转发功能
[root@linux ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@linux ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@linux ~]#
在docker中测试端口映射
[root@linux ~]# docker run -d --name tomcat02 -p 9527:8080 tomcat:latest
我们会发现tomcat访问没得权限,那是因为Tomcat是最小化的内容
[root@linux ~]# docker exec -it tomcat02 /bin/bash
root@2cb65acbee53:/usr/local/tomcat# ls -l
total 136
-rw-r--r--. 1 root root 18982 Apr 3 12:06 BUILDING.txt
-rw-r--r--. 1 root root 5409 Apr 3 12:06 CONTRIBUTING.md
-rw-r--r--. 1 root root 57092 Apr 3 12:06 LICENSE
-rw-r--r--. 1 root root 2333 Apr 3 12:06 NOTICE
-rw-r--r--. 1 root root 3255 Apr 3 12:06 README.md
-rw-r--r--. 1 root root 6898 Apr 3 12:06 RELEASE-NOTES
-rw-r--r--. 1 root root 16262 Apr 3 12:06 RUNNING.txt
drwxr-xr-x. 2 root root 4096 Apr 24 23:49 bin
drwxr-xr-x. 3 root root 4096 May 23 08:41 conf
drwxr-xr-x. 2 root root 78 Apr 24 23:49 include
drwxr-xr-x. 2 root root 4096 Apr 24 23:49 lib
drwxrwxrwx. 2 root root 4096 May 23 08:41 logs
drwxr-xr-x. 3 root root 4096 Apr 24 23:49 native-jni-lib
drwxrwxrwx. 2 root root 30 Apr 24 23:49 temp
drwxr-xr-x. 2 root root 6 Apr 24 23:49 webapps
drwxr-xr-x. 7 root root 81 Apr 3 12:04 webapps.dist
drwxrwxrwx. 2 root root 6 Apr 3 12:02 work
root@2cb65acbee53:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@2cb65acbee53:/usr/local/tomcat#
最后访问
docker 出现
[root@docker ~]# docker run --name centos-bbs -it -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html centos:centos6.9
WARNING: IPv4 forwarding is disabled. Networking will not work.
解决方案
[root@docker ~]# echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
[root@docker ~]# systemctl restart network && systemctl restart docker
测试
[root@docker ~]#
[root@docker ~]# docker rm -f $(docker ps -qa)
c1c50dce5366
[root@docker ~]# docker run --name centos-bbs -it -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html centos:centos6.9
[root@2325579ccff8 /]#