一、数据卷概念
作用:主要是实现宿主机和容器之间的文件共享。 数据卷必须在容器启动的时候就要指定。
二、数据卷实现方法
-v参数
-v 宿主机目录:容器目录
例子:如果目录不存在,会自动创建目录
[root@oracle ~]# docker run -d -p 81:80 -v /data:/data --name test2 nginx:latest
#创建测试文件
[root@oracle ~]# cd /data/
[root@oracle data]# echo "123" > test
#进入容器验证
[root@oracle ~]# docker exec -it test2 bash
root@fa36ada7afaf:/# cd data/
root@fa36ada7afaf:/data# cat test
123
三、docker网络
1.桥接模式
当docker启动时,会自动在主机上创建一个docker 虚拟网桥,实际上是linux的一个bridge,可以理解为一个软件交换机。它会在 挂载到它的网口之间进行转发数据。
#首先查看docker0 网桥的地址
[root@oracle ~]# ifconfig docker0 |awk '/netmask/{print $2}'
172.17.0.1
#创建两个测试容器。 centos镜像在创建的时候必须要 指定it参数
[root@oracle ~]# docker run -d -it --name c1 centos:latest
784db462d4545d55525c199a151bc811e86bbbbee683799257e597478ac5a9c9
[root@oracle ~]# docker run -d -it --name c2 centos:latest
45da60cd84d57b6e28c45ecf69a0d0e0fc111d9d29317227de74d6d8ef465536
查看容器IP
[root@oracle ~]# docker inspect c1 |egrep -iw "ipaddress|gateway"
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
[root@oracle ~]# docker inspect c2 |egrep -iw "ipaddress|gateway"
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
查看网桥
[root@oracle ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
18f296205444 bridge bridge local
7b615ca5682f host host local
64cbd1887daa none null local
2.自定义网桥
语法格式:
docker network create 网桥名字
例子:
[root@oracle ~]# docker network create mybridge
a8e9ba2e73beea91538227d7d5d7adf30fc4e4e00d674132e72e858da893cba5
[root@oracle ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
18f296205444 bridge bridge local
7b615ca5682f host host local
a8e9ba2e73be mybridge bridge local
64cbd1887daa none null local
创建的容器连接到此网桥。通过–network 网桥名 连接到对应的网桥上
[root@oracle ~]# docker run -d -it --name c3 --network mybridge centos:latest
[root@oracle ~]# docker run -d -it --name c4 --network mybridge centos:latest
查看网桥上连接容器.
[root@oracle ~]# docker inspect mybridge |grep -i name
"Name": "mybridge",
"Name": "c4",
"Name": "c3",
自定义网桥这里有一个非常方便的地方,就是会将容器命和IP映射,也就是说在容器内可以通过容器命进行方访问
[root@oracle ~]# docker exec -it c3 bash
[root@2bfbe2d63baf /]# ping c4
PING c4 (172.18.0.3) 56(84) bytes of data.
64 bytes from c4.mybridge (172.18.0.3): icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from c4.mybridge (172.18.0.3): icmp_seq=2 ttl=64 time=0.130 ms
删除自定义网桥
[root@oracle ~]# docker network rm mybridge
mybridge
四、docker网络
主机模式(host)
容器使用宿主机的ip地址进行对外提供服务,本身没有IP地址。直接使用宿主机的端口
[root@oracle ~]# docker run -dit --name n1 --network host nginx:latest
[root@oracle ~]# netstat -antp |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12871/nginx: master
当使用host模式网络时,容器实际上继承了宿主机的IP地址。该模式比bridge模式更快(因为没有路由开销) 对网络性能要求比较高,可以使用该模式。,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。
|