5.Docker 网络管理
2019-03-28 本文已影响0人
条子在洗澡
名称 | 版本 |
---|---|
系统 | CentOS Linux release 7.6.1810 (Core) |
Docker version | 1.13.1 |
查看docker网络
docker network list
-------------------------------------------------------
NETWORK ID NAME DRIVER SCOPE
83a633e44192 bridge bridge local
b0efcae788f6 host host local
6c42f1ff8b6d none null local
-------------------------------------------------------
docker network inspect bridge
[
{
"Name": "bridge",
"Id": "83a633e4419213412e767ce82070234ff57f689e34bc1ee9699e660f80240358",
"Created": "2019-03-27T03:53:28.457676544-04:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": { "6770ed441f606f3c87c666d6d986894af52cf1616cb77362be78261330121932": {
"Name": "db",
"EndpointID": "5191ba213ce5b7246fe61a7f4860214bc3b31b43b6ebbfdda29f5f7bb299d1e5",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
},
"71ed148515b1ad56412a4b37cb708f219827cc80442fc84f1c5585316967fc15": {
"Name": "c1",
"EndpointID": "cb5726a91d25c9ebc686103cca82c9369b7631a9c9ece475b89abca62ab8e3bd",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
}, "fb160b5754a1ef265f3d27fe69e657734a520d49311ea60866f6b5d530f19410": {
"Name": "web",
"EndpointID": "2c4aec086a20b278ccae70db3314ea39bce770b65906a3e463b85aa01713d026",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
}
}
]
-------------------------------------------------------
查看,创建,删除,docker网络
#查看docker帮助
mandb #初始化帮助文档
man -k docker
man docker-network-create
#获取到docker-network-create的参数如下
$ docker network create \
--driver=bridge \
--subnet=172.28.0.0/16 \
--ip-range=172.28.5.0/24 \
--gateway=172.28.5.254 \
br0
#创建网络
docker network create -d bridge --subnet=10.0.0.0/24 mynet
#查看网络
docker network list
NETWORK ID NAME DRIVER SCOPE
83a633e44192 bridge bridge local
b0efcae788f6 host host local
4ffa318642bf mynet bridge local
#容器使用自己创建的网络
docker run --net=mynet --rm -it centos /bin/bash
#删除网络
docker network rm mynet
物理机和容器端口映射
docker run -dit --restart=always --name=db2 -p 物理机端口:容器端口 -v /db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=redhat mysql
docker run -dit --restart=always --name=db2 -p 容器端口 -v /db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=redhat mysql (物理机端口随机分配)
练习1,通过ip 让两个容器通信
#wordpress+mysql 搭建个人论坛
#临时关闭selinux
setenforce 0
#下载镜像
docker pull hub.c.163.com/library/wordpress:latest
docker pull hub.c.163.com/library/mysql:latest
#镜像重命名
docker tag hub.c.163.com/library/wordpress wordpress
docker tag hub.c.163.com/library/mysql mysql
#创建数据容器
docker run -dit --restart=always --name=db -v /db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=redhat -e MYSQL_DATABASE=blog mysql
#查看数据库容器ip地址
docker exec -it db ip a
#创建wordpress并连接到mysql
docker run -dit --restart=always --name=blog -v /web:/var/www/html -p 80:80 -e WORDPRESS_DB_HOST=172.17.0.2 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=redhat -e WORDPRESS_DB_NAME=blog wordpress
#测试
curl ip (web容器所在的物理机ip地址)
练习2,通过容器别名绑定的方式 让两个容器通信(--link 容器别名:镜像名)
#创建数据容器
docker run -dit --restart=always --name=db -v /db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=redhat -e MYSQL_DATABASE=blog mysql
#查看数据库容器ip地址
docker exec -it db ip a
#创建wordpress并连接到mysql(blog容器中并没有制定用户名,密码等信息,但是--link参数会将db中已经设置好的信息赋予blog容器,所以可以直接使用)
docker run -dit --restart=always --name=blog -v /web:/var/www/html -p 80:80 --link db:mysql wordpress