Docker 7 ( Docker 三剑客之 Machine、Compose)

一、Docker Machine

简介:
1、Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境;支持在常规Linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装配置docker host。
2、Docker Machine 项目基于 Go 语言实现,目前在 Github 上的维护地址: https://github.com/docker/machine/

1.machine安装与使用

真机将 docker-machine-Linux-x86_64-0.16.1安装包传给server1,server1安装machine,之后一键给server3安装docker
请添加图片描述
把docker-machine-Linux-x86_64-0.16.1移动到/usr/local/bin/下,并改名为docker-machine,因为是二进制文件,所以要赋予执行权限
请添加图片描述
在真机上,下载get-docker官方安装脚本到http发布目录下
请添加图片描述
在真机的apache默认发布目录下添加yum源文件,为machine安装提供支持
请添加图片描述
请添加图片描述
修改get-docker.sh文件,将yum源修改为宿主机
请添加图片描述
has_rootless_extras=“0”(不监测rootless:Rootless容器可以利用 user namespaces 将容器中的root用户 uid/gid 映射到宿主机的非特权用户范围内。)
请添加图片描述
创建machine:machine指的是docker daemon主机,其实就是在host上安装和部署docker,创建machine要求免密登陆远程主机;
server1创建免密登陆的密钥,并给server3
请添加图片描述
请添加图片描述
server3有yum源指向文件
请添加图片描述
创建主机:(离线安装需要在目标主机(server1)提前安装好docker软件包);
server1使用docker-machine为server3部署docker(使用get-docker.sh脚本为ip是172.25.36.3的server3安装docker);
请添加图片描述
查看所有docker-machine的操作进程,能够看到docker-machine运行在server3上
请添加图片描述
server3查看2376端口已开放(docker-machine列表中与server3的会话端口)
请添加图片描述
可以在隐藏目录docker下看到server3的证书
请添加图片描述
server3在/etc/docker目录下,可以看到证书文件;
docker主机(server3)上生成的配置文件如下所示,可以看出,docker daemon启用了TLS验证功能(安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性),docker-machine已经为其生成好了所需的证书文件。
请添加图片描述
server3 执行docker info 出现警告
请添加图片描述
解决办法
请添加图片描述
手动加载所有的配置文件,即可解决
请添加图片描述
同理控制server2
请添加图片描述
查看docker-machine列表中与server2和server3的会话端口为2376
请添加图片描述
请添加图片描述

2.管理machine

使用docker-machine来控制server2/3;
docker-machine config server2 :查看machine配置
请添加图片描述
显示访问server3所需的环境变量;
根据提示执行:eval $(docker-machine env server3),可以直接切入目标主机,eval登陆后,就相当于直接在server2,server3执行操作
请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述
但是有个问题在于,不确定自己是在哪个容器里,除非查看env
请添加图片描述
安装bash脚本,使得行提示符更加的人性化,真机将下面几个组件放置server1这个目录下
请添加图片描述
vim .bashrc,修改环境变量,显示进入的docker主机名称
请添加图片描述
请添加图片描述
退出当前shell,重新登陆即可生效
请添加图片描述
此时很清楚的显示进入了哪台主机
请添加图片描述

docker-machine 子命令:
docker-machine upgrade server2 更新docker版本
docker-machine config server2 查看machine配置
docker-machine scp 可以在machine中复制文件
docker-machine ssh 连接machine
docker-machine rm 删除machine

二、Docker Compose

简介:
1、微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。Docker Compose是一种编排服务,基于pyhton语言实现,是一个用于在 Docker 上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用
2、用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建,解决了容器与容器之间如何管理编排的问题。
3、Docker Compose 中有两个重要的概念:
服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

在这里插入图片描述

docker-compose.yml 属性
Image:指定为镜像名称或镜像 ID,如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
Build:指定 Dockerfile 所在文件夹的路径。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
Command:覆盖容器启动后默认执行的命令。
Links:链接到其它服务中的容器。
Ports:端口映射。
Expose::暴露端口信息
Volumes:卷挂载路径设置

1.docker-compose配置

由于需要直接使用docker-compose指令来操作,所以需要在系统的/usr/local/bin目录下有compose的二进制文件,那么用户在命令行输入命令后,系统会在环境变量$PATH内找命令;
docker-compose安装包是二进制文件,放到/usr/local/bin才能执行,/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件;
请添加图片描述
家目录下创建compose目录,编写docker-compose.yml文件,一键部署haporxy+nginx,实现负载均衡
请添加图片描述
配置三个服务,web1,web2和haproxy,web1和web2用nginx镜像安装,haproxy用haproxy镜像安装;
/root/compose/web1挂载到容器内/usr/share/nginx/html下,/root/compose/web2挂载到容器内/usr/share/nginx/html下;
宿主机的80端口映射到容器内的80端口;,网络都是统一的webnet
请添加图片描述
在当前路径下创建web1和web2子目录,并写入发布内容
请添加图片描述
请添加图片描述
在当前路径下创建haproxy子目录
请添加图片描述
haproxy目录下要有haproxy的配置文件
请添加图片描述
修改配置文件
请添加图片描述
负载均衡模式是轮叫,真正的服务器是web1和web2
请添加图片描述
请添加图片描述
haproxy镜像导入
请添加图片描述
运行docker-compose:docker-compose命令必须在项目下运行。
以下是项目目录结构: tree命令用于以树状图列出目录的内容
请添加图片描述
docker-compose up:创建并启动容器,-d 打入后台
请添加图片描述
查看状态已开启
请添加图片描述
查看日志
请添加图片描述

2.测试

在网页或者在真机是都可以,实现负载均衡
请添加图片描述
网页输入172.25.36.1/admin/stats 查看haproxy监控
请添加图片描述
当我们停止web1的服务后
请添加图片描述
发现负载均衡只剩web2了,也就是说如果web1被down掉了,客户端访问172.25.11.1时,就不会接入web1,只会找web2(haproxy的健康监测功能)请添加图片描述
查看监控
请添加图片描述
将compose服务重启,负载均衡即可恢复
请添加图片描述
请添加图片描述
请添加图片描述

Docker Compose 常用命令
Build: 构建或重新构建服务。
kill:强制停止服务容器。
logs:查看服务的输出。
port:打印绑定的公共端口。
ps:列出所有容器。
pull:拉取服务所需镜像。
rm:删除停止的服务容器。
up:构建并启动容器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值