docker学习笔记(五):网络管理

174人浏览 / 0人评论

我一直都认为docker的网络管理是docker中最复杂,特别是容器间通信的问题困扰了我很久。

首先我们来看看docker中关于网络的几个命令:

网络管理

查看所有网络

docker networker list

查看某一个网络的详细信息

docker network inspect brige

查看帮助文档

man -k docker

如果上边的命令执行后未看到相应的文档,则执行下面的命令:

mandb

然后再次执行查看指令

创建网络

docker network create mynetwork -d brige --subnet=10.0.0.0/24

使用自定义网络

docker run --network=mynetwork --name=web2 nginx

删除网络

docker network delete mynetwork

容器间通信

容器间通信是docker学习中的难点,主要是因为牵扯到多层网络架构和进程通信问题。

端口映射

端口映射主要使用过-p指令完成的,使用方法如下:

docker run -p 80 --name=web2 nginx

上面的指令执行完后,docker会从宿主机中随机寻找一个未使用的端口作为外部端口,与容器内的80端口映射,其他地方访问该容器只需要访问宿主机的映射端口即可。

但是上诉方法映射的端口随机性太强,不方便使用,所以-p指令也可以指定具体端口,如:

docker run -p 80:80 --name=web2 nginx

冒号前为宿主机端口,冒号后为容器中的端口。访问宿主机的80端口就可以访问到容器的80端口了。

--link选项

docker run --link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。

--link的格式:

--link <name or id>:alias

其中,name和id是源容器的name和id,alias是源容器在link下的别名。

例如:

# 创建mysql容器
docker run -dit --restart=always --name=db -v /db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=blog hub.c.163.com/libarary/mysql

# 创建wordpress容器,并使用--link连接mysql容器
docker run -dit --restart=always --name=blog -v /web:/var/www.html -p 80:80 --link db:mysql hub.c.163.com/library/wordpress

直接访问宿主机的80端口,即可打开wordpress的配置页面,不需要设置数据库链接地址等。

全部评论