在Docker创建容器后,为容器生成一个虚拟ip。对外是不能链接的,对内是互通互联的。但是ip会改变
Link单向通信
docker run -d --name 自己容器的名称 images 创建容器时name声明
docker inspect 容器ID 查看容器元数据,networksetting查看虚拟ip,根据虚拟ip可以在容器内部ping通其他容器,但不能用名称直接ping通
docker run -d --name 自己容器的名称 --link 目标容器名称 images link链接目标容器
在容器内部可以直接用目标容器名称ping通。在工程中配置项目地址时,直接指定目标容器名称即可
Bridge双向通信
docker创建了一块虚拟网卡,绑定在同一块虚拟网卡的容器都可以互联互通。对外通信,是宿主机物理网卡和虚拟网卡的对应。
docker network ls 列出网络服务列表,默认会有一个docker容器与外部联通的网桥
docker network create -d bridge my-bridge 创建自己的网桥,-d 指定类型为网桥
docker network connect my-bridge web 将web容器和redis容器绑定在同一个网桥,即可互联互通
docker network connect my-bridge redis
容器间共享数据
宿主机下的目录内容,会映射到容器内的目录
docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat
挂载点设置方式(–volumes-from),同一管理挂载点
创建共享容器
docker create --name webpage -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/true
共享容器挂载点,使用创建的共享容器配置
docker run --volumes-from webpage --name t1 -d tomcat
测试例子:更改宿主机下/usr/webapps,访问各个容器是同步修改,因为其实就是各个容器对宿主机目录的映射关系
docker create --name webpage -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/true
docker run -d --name t1 -p 8000:8080 --volumes-from webpage tomcat
docker run -d --name t2 -p 8001:8080 --volumes-from webpage tomcat