四 docke单机网络
基本命令
docker network ls
docker network create -d bridge test-net # -d:参数指定 Docker 网络类型,有 bridge、overlay。
docker run -dit --name test1 --network test-net ubuntu /bin/bash
容器中安装ping命令
apt-get update
apt install iputils-ping
容器切换网络
docker network disconnect bridge cm02 # 容器cm02从网络bridge断开
docker network connect bri10 cm02 # 容器cm02联网到bri10
配置DNS,宿主机的 /etc/docker/daemon.json,配置后所有容器都采用该DNS。(如果在容器启动时没有指定 --dns 和 --dns-search,Docker 会默认用宿主主机上的 /etc/resolv.conf 来配置容器的 DNS。)
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
docker run -it --rm ubuntu cat etc/resolv.conf # 重启docker进程后,查看dns是否生效
$ docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu # 指定某个容器采用dns
--rm:容器退出时自动清理容器内部的文件系统。
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。
1、选取合适的镜像alpine
docker pull alpine
docker run -dit --name cm01 alpine
docker run -dit --name cm02 alpine
docker exec -it cm01 ash
ping 172.17.0.3 #两个容器能互通
2、容器交换机docker0
在宿主机上增加了docker0交换机,并增加了2个容器的接口。
ping以后,能够看到两个容器的mac地址
3、容器可以互通,也可以访问外网
自动为容器分配dns
查看防火墙端口
iptables -t nat -nL
4、外部访问容器
docker run -d -p 10001:8080 --name cm03 httpd-eric:1.0
5、创建删除容器交换机
①网络类型
none 无网络,只有loopback口
bridge 普通网络
host 容器和主机共用一个ip
contain 容器和另一个容器共用一个ip
overlay 跨容器的网络
②创建容器网络
-d, --driver string Driver to manage the Network (default "bridge")
--subnet strings Subnet in CIDR format that represents a network
--gateway strings IPv4 or IPv6 Gateway for the master subnet
docker network create -d bridge --subnet 192.168.10.0/24 --gateway 192.168.10.1 bri10 # 创建网络bri10
③删除容器网络
docker network rm 9fc774056c91 # 删除网络bri10
6、指定网络创建容器
docker run -dit --name cm01 --network bri10 alpine
7、容器切换网络
docker network disconnect bridge cm02 # 容器cm02从网络bridge断开
docker network connect bri10 cm02 # 容器cm02联网到bri10