Docker自身的4种网络工作方式,和一些
自定义网络模式
安装Docker时,它会
自动创建三个网络,bridge(创建容器
默认连接到此网络)、 none 、host
host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和
一个指定的容器共享IP、端口范围。
None:该模式
关闭了容器的网络
功能。
Bridge:此模式会为每
一个容器分配、设置IP等,并将容器连接到
一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信
让外部
网络访问容器中web服务
思路:首先使用centos镜像新建
一个容器,然后在该容器中安装web服务,并启动再把该容器导成
一个新的镜像(centos-httpd),然后再使用新镜像(centos-httpd)创建新的容器,并指定端口映射供外部访问。
1:新建容器指定
名称httpd,并在容器安装web服务(
Nginx)
[root@host1 ~]# docker run -itd --name
Nginx centos bash
910043992a8e734debe42a04e5d21e6a595a1c7dea2a6550c66128a02cd1dea1
进入容器安装web服务
[root@host1 ~]# docker exec -it 910043 bash
[root@910043992a8e /]# yum -y install epel-release
[root@910043992a8e /]# yum -y install
Nginx
2:web服务安装完成后,将已安装web服务的httpd容器导出新的镜像为centos_httpd
[root@host1 ~]# docker commit -m "install
Nginx" -a "test" 910043992a8e centos_httpd
sha256:b2a4963d29cfd6c2a1d44f23af0a08395f1d210872e37fc49c1d7f7a57d66e79
[root@host1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_httpd latest b2a4963d29cf 9 seconds ago 412MB
centos latest 1e1148e4cc2c 9 months ago 202MB
3:使用centos_httpd镜像新建
一个容器,并指定8088端口映射为容器中的80端口新建容器启动
语法:docker run -itd --privileged -e "container=docker" -p 【宿主机端口】:【容器端口】 【镜像名】 /usr/sbin/init
说明:-p后面格式是IP:port:IP:port,或者127:0.0.1::port,这里两个冒号,表示
随机分配主机
一个端口映射;如果
Nginx启动报
错误Failed to get D-Bus connection: Operation not permitted,因为dbus-daemon没有启动导致,
解决方法:新建容器时
加上--privileged -e "container=docker" ,并且最后面的命令改为/usr/sbin/init。
[root@host1 ~]# docker run -itd --privileged -e "container=docker" -p 8088:80 centos_httpd /usr/sbin/init
3bbdb44c307851f2fdf5d3927dbfc4f2f3a78dc69357687b492d416317b3cecb
[root@host1 ~]# docker exec -it 3bbdb44 bash
[root@3bbdb44c3078 /]# sy
stemctl start
Nginx
[root@3bbdb44c3078 /]# echo "Hell Word" > /usr/share/
Nginx/html/1.txt
4:
退出容器后,用curl命令测试本机8088端口是否可以访问容器的80端口
内容
[root@host1 ~]# curl localhost:8088/1.txt
Hell Word
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。