文章目录
一. 容器间单向通信(link)
通过link完成容器间的单向通信
1. 单向通信
docker run -d –name web tomcat
docker run -d –name database -it centos /bin/bash
为什么第二个添加-it和/bin/bash
创建容器加-it和bin/bash的目的:centos创建完容器自动进入到退出的状态,若想让容器的状态一直保持运行,需要进入-it交互模式进入/bin/bash,通过-d在后台运行
docker inspect 容器id
查看容器原始信息
NetworkSettings中IPAddress为所分配的虚拟ip地址
所有的ip都被docker进行管理
两个容器间,进入一个容器后,可通过ip,ping通另一个,但用name名ping不通,需要进行网络的设置
docker rm -f 容器id
docker run -d –name web –link database tomcat
2. 为什么要用name去完成ping,而不用ip呢
ip地址无论怎么发生变化,name还叫database,就可以连接
二. 容器的双向通信(Bridge网桥)
1. 概念
通过网桥bridge完成多组容器间的双向通信
双向互联:通过创建一个新的网桥,将已有的容器和网桥进行绑定,默认所有与网桥绑定的容器之间都是互联互通的
2. 网桥的作用
网桥
1.docker环境和宿主环境的通信者
2.对容器从网络层面上进行分组
把2个容器绑定到网桥上,2个容器的数据能互通
3. 网桥搭建
docker run -d –name web tomcat
docker run -d -it -name database centos /bin/bash
docker ps
docker network ls
network:网络服务的命令
ls:列出当前docker底层网络的信息
默认每个docker容器都会提供一个默认的网桥,网桥承担容器和外面互通的桥梁
docker network create -d bridge my-bridge
新建网络的类型:网桥
创建后,返回一个id
docker networkd ls
展示network列表信息
会出现一个my-bridge的网桥
3. 容器和网桥的绑定
docker network connect my-bridge web
容器和网桥绑定
my-bridge:网桥的名称
web:容器的名称
docker network connect my-bridge database
两个容器就互通了
两个容器之间都绑定bridge,两个容器隶属于my-bridge的分组中
# 验证:
1. 进入容器
docker exec -it 容器id /bin/bash
ping web(看是否能ping通name为web的容器)
2. 进入另一个tomcat容器
docker exec -it 容器id /bin/bash
ping database
4. 网桥实现原理
创建网桥的背后,在docker中,每当创建一个网桥,在宿主机上安装一个虚拟网卡,这个虚拟网卡也承担起网关的作用,web和database通过虚拟网卡绑定,在docker容器内部,就可以实现互联互通,从一个容器发出的数据,都可以通过网关找到另一个容器来接收数据,反之,同理
虚拟网卡所构成的网关就形成了一个内部通路,只要新的容器绑定到虚拟网卡上,就可以和其他绑定虚拟网卡互连互通
虚拟网卡的ip地址是虚拟,但和外部通信的话虚拟网卡需要和宿主机的物理网卡做地址转换,和外网通信
三. Volume容器间共享数据
volume在计算机中翻译为数据卷
1. 容器间共享数据的目的
如果页面文件发生了变化,每个容器间都需要进行更新
2.数据共享方案
在宿主机间开辟一块空间,被其他容器进行共享,容器内部不在持有页面文件,页面文件存放在宿主机的某一个磁盘上,通过docker环境实现多个容器间读取同一份文件,以后只需更新宿主机所创建磁盘目录中的web页面文件即可,使所有容器生效
3. 数据卷volume设置
- 共享方式一
docker run –name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
缺陷:若写错目录一个字母都带来挂载的失败,每个挂载都需要重新写一遍目录
- 共享方式二
通过创建共享容器完成挂载
-
docker create –name webpage -v /webapps:/usr/local/tomcat/webapps tomcat /bin/true
创建共享容器
-v:设置容器挂载点
webapps为宿主机挂载点
usr/local/tomcat/webapps:为容器内部的所要被挂载的路径
/bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出
-
docker run –volumes-from webpage –name t1 -d tomcat
根据所创建共享容器webpage挂载信息使用到新的容器上
–volumes-from:从名称获取挂载点相关信息,本质和方式一种的-v一样,只不过抽取一个挂载点
总结:
实际开发中,根据挂载容器的多少选择方式一或者方式二
实操:
- 创建客户端自定义的volume-webapps目录,里面包含html文件
- 上传到linux的/usr/webapps
- cd /usr/webapps
- 创建挂载 docker run –name t1 -p 8000:8080 -d -v /usr/webaps:/usr/local/tomcat/webapps tomcat
- 访问ip:port:8000/volume-webapps/index.html
查看容器内部是否含有volume-webapps
- 进入容器内部:docker exec -it 容器id /bin/bash
- cd webapps
- cd volume-webapps能查看到index.html
数据卷的验证
- cd /usr/webapps/volume-webapps
- vim index.html
- 修改index.html,保存
- 直接刷新浏览器,验证成功
方式2:共享容器简化上面的过程
-
cd /usr/webapps
-
docker create –name webpage -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/true
bin/true:没有含义,占位符
挂载点名称:webpage
-
docker run -p 8002:8080 –volumes-from webpage –name t1 -d tomcat
通过制定容器的挂载点来进行端口挂载
挂载点的成立:抽取了目录,不用像方式1挂载时去写冗余的目录
–volumes-from:从哪个挂载过得路径,相当于-v 挂载路径:被挂载的路径
四. Docker compose容器编排工具
通过解析脚本,自动安装ngins,tomcat,mysql容器,彼此间形成依赖联系,每个容器所需的配置文件都可进行相应的绑定
1. 容器编排
先部署哪个,在部署哪个,宿主机部署容器的过程
docker compse
- 单机多容器部署工具,只能在一台宿主机上进行部署,集群环境通过docker swarm或k8s来解决
- 通过yml文件定义多容器如何部署
- win/mac默认提供Dokcer Compose,像服务器系统,如Linux需安装centos
docker compose安装
官网:https://docs.docker.com/compose/install/
因为win和mac默认提供doker compose,所以不用安装
Linux系统安装docker compose
命令如下图,只有2个命令就可安装好docker compose
1.获取docker compose并安装,也许会拒绝访问,要多试几次
2.为安装的docker compose授权
docker-compose -version
查看docker-compose版本
2. 通过docker compose创建开源博客
根据官方步骤,依次执行
https://docs.docker.com/samples/wordpress/
cd /usr
mkdir wordpress
cd wordpress
vim docker-compose.yml
添加官网所提供的的yml内容
解析yml脚本 docker-compose up -d
up : 代表解析,自动部署
-d : 后台执行
执行后的控制台:
创建了2个容器
1.mysql5.7
2.wordpress:应用容器
这时使用docker ps
在应用容器上wordpress自动做了端口映射,8000-》80
在客户端浏览器中输入ip:port(8000)
创建完后,登录
登录后展示
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/63283.html