Docker Container Service02 网络设置
一、容器网络访问原理
1.1 网络类型
二、Docker随机端口映射
默认情况下,docker会创建一个桥接网卡[docker 0],docker有2种映射方式,一种是随机映射,一种是指定映射
提示:生产场景一般不使用随机映射,但是随机映射的好处就是由docker分配,端口不会冲突
docker 端口映射分为两种:
1,运行容器,端口随机映射
[root@linux-node1 ~]# docker run -d -P nginx
635333a8372b97a7e011ed4d188a2e2315fa824abae903f288566b9c43659219
提示:物理机的32768被映射到80端口
-P代表随机映射
-d 后台运行 并输出ID
2,web访问http://10.0.0.106:32768/
,
3,我们可以看一下iptables查看Nat表
[root@linux-node1 ~]# iptables -t nat -vnL
-t 指定 表
-v 显示详细信息
-n 显示number 数字
-L -list 显示所选链的所有规则
4,我们可以使用docker logs [ID/Name]来查看日志
[root@linux-node1 ~]# docker logs 635333a8372b
10.0.0.1 - - [23/Jan/2018:09:59:08 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36" "-"
2018/01/23 09:59:08 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.0.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.106:32768", referrer: "http://10.0.0.106:32768/"
10.0.0.1 - - [23/Jan/2018:09:59:08 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://10.0.0.106:32768/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36" "-"
三、Docker指定端口映射,nginx8080端口
[root@linux-node1 ~]# docker run -d -p 10.0.0.106:8080:80 --name mynginx nginx
###将10.0.0.106的8080端口,映射到容器的80端口
3016eacefc8674c390fd6cc0318cbdcc5ebdfcded2bba11c670857b0b11fcb3e
[root@linux-node1 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3016eacefc86 nginx "nginx -g 'daemon of…" 11 seconds ago Up 11 seconds 10.0.0.106:8080->80/tcp mynginx
提示: -d代表后台运行 -p 指定端口 --name 指定名称
web访问http://10.0.0.106:8080/
通过端口映射,我们就可以非常方便的去访问到容器内部的服务
3)docker 启动映射多端口
[root@linux-node1 ~]# docker run -d -p 443:443 -p 82:80 --name nginxv2 nginx
8fb7e9ae998a023520a9f46e1add4a297b052e326a0a89cfc0c2610a1c3e0179
[root@linux-node1 ~]# docker port nginxv2 ##通过port 查看nginxv2容器的端口映射关系
443/tcp -> 0.0.0.0:443
80/tcp -> 0.0.0.0:82
三、Docker数据管理介绍
2.1 Docker数据分为两种:
数据卷: -v /data
-v src:dst
数据卷容器: --volumes-from
可以将数据卷理解为挂载,可以将数据mount到docker镜像中,让我在docker镜像里写数据时,实际写入的是物理主机里面。如果容器多了,不方便管理
四、Docker数据卷应用
1)先启动个容器,挂在个data目录
[root@localhost ~]# docker run -it --name volume-test1 -v /data centos
[root@8c460ed42a9d data]# ls /data/ #容器下目录为空
2)那我们容器内的data,放在物理机的什么位置呢?
[root@localhost ~]# docker inspect 容器ID |grep Source ##自定义容器ID
#在物理机上打开绝对路径 /var/lib/docker......
2.1 验证测试:【容器/data 目录与物理机的】
3) 指定映射目录 src(物理机目录):dst(容器目录)
[root@localhost _data]# docker run -it -v /opt:/opt --name centos01 centos
##作用:特别用于开发 源代码目录直接映射到容器里,无需拷贝文件
##指定权限:rw 类似于nfs配置
##挂在单个文件
五、Docker数据卷容器应用(类似NFS)
数据卷设置
案例:我们创建一个容器,起名叫nginx-volume-test 挂载到容器中的/data目录下
数据卷容器就是可以让一个容器访问另一个容器的卷,不管这个容器是否运行都可以访问到。
1) 数据卷容器简单解释就是:它可以让这个数据在多个容器中共享
[root@linux-node1 ~]# docker run -it --rm --name volume-test3 --volumes-from nginx-volume-test2 centos /bin/bash
--volumes-from 另一个容器的名称
#此时我们登陆test3,发现有个data目录,在下面创建个文件
[root@afe226ae48cb data]# cd /data/
[root@afe226ae48cb data]# echo "qiuyuetao" > 1.txt
[root@afe226ae48cb data]# cat 1.txt
qiuyuetao
现在我们可以访问到nginx-volume-test2下面挂载的目录,这就实现**类似nfs的功能 **
root@572bc3d4fdc2:/data# cat /data/1.txt
qiuyuetao
提示:我们现在如果停掉test2 一样可以访问,数据卷容器还有一个好处是不管这个容器是否运行都会起作用,只要有容器在使用数据卷容器就无法删除
- QQ精品交流群
-
- 微信公众号
-