容器架构-Docker-05
今日内容:
一、容器编排工具Compose
1.1 容器编排介绍
目前存在的问题:docker容器的管理(启动,关闭,重启),需要手动执行,如何自动管理多个容器? 就像docker镜像可以通过Dockerfile一键创建。
这时,就是能使用容器编排技术。
单机容器编排工具:
- docker compose
- 需要单独安装(epel源中就有),语法yaml格式
容器集群管理的方法:
- ansible + docker compose + dockerfile
- docker swarm实现集群管理.
- mesos
- 未来我们通过k8s kubernetes实现集群管理
了解:docker三剑客
- docker machine(管理虚拟机)
- docker compose(容器编排)
- docker swarm(集群)
1.2 compose初步上手
1.2.1 安装
1.2.1 书写配置文件
书写格式参考:
编写一个简单的compose,部署nginx容器
compose文件有一定的命名规则,建议按规范来
1.2.3 运行
执行yaml文件
查看,使用compose的ps
测试
1.3 docker-compose命令
docker-compose可以用于创建、运行容器、删除容器、查看容器情况等,包含多种功能。
实际上这个命令包含了docker container和docker image命令
命令格式 |
功能 |
up |
up == run,创建并运行容器 其中up -d 代表后台运行 |
down |
关闭容器、删除容器以及相关资源(慎用!!) |
stop/start/restart |
关闭、开启、重启容器 |
ps |
查看容器运行情况,可选用-q 选项 |
top |
查看容器进程信息 |
logs |
容器日志 |
rm |
删除容器(需要容器已经关闭) |
images |
查看镜像 |
注意:
docker-compose命令只能看到受compose编排的容器信息
1.4 修改docker-compose与生效
如果docker-compose简单修改端口、数据卷
docker-compose up -d
会自动识别,重新创建容器.
如果容器的名字也改了,会造成新旧容器的端口冲突,会失败
- 可以
docker-compose up -d --remove-orphans
删除之前容器或失效容器
1.5 compose文件常用指令
挂载数据卷、容器之间的依赖、先后顺序。
建议到官网查找,按需求使用
1.6 案例:compose部署kodexp
把容器互联的案例,用compose再实现一遍
文件目录
原来的命令操作
改用compose的yml文件:
执行
测试
问题记录:
在启动后容器后,nginx容器显示EXIT 1状态,不正常。
查看日志发现问题是由kodexp_php容器的别名引起的:
修改nginx配置文件,不使用别名即可
1.7 案例:compose和dockerfile结合使用
通过dockerfile构建镜像,在通过compose启动容器
以tengine的bird案例为基准,重构为:tengine+birds+compose
目录结构
yml内容
Dockerfile内容
执行compose,可见compose自动调用Dockerfile开始构建ngx_bird镜像。
但是构建完之后有警告
按照警告的要求执行
已经运行起来了
测试,访问:http://10.0.0.82:80
二、Docker镜像仓库
Docker镜像仓库主要分为四种,具有各自的应用场景
仓库方案 |
应用场景 |
镜像保存为压缩包 |
save/load,仅适用于节点极少的情况,很不方便 |
registry镜像仓库 |
适用于小型网站集群(镜像不多,环境不复杂),命令行操作,使用方便 |
harbor镜像仓库 |
企业级镜像仓库(docker、k8s都可用),图形化页面 |
公有云的镜像仓库 |
在公有云上申请(个人、企业) |
2.1 registry仓库
2.1.1 环境准备
主机名 |
IP地址 |
备注 |
docker01 |
10.0.0.81 |
|
docker02 |
10.0.0.82 |
作为仓库 |
所有主机对应主机名能够解析
2.1.2 极速上手
A.服务端部署
1、安装镜像仓库服务
2、配置服务端,允许使用http(未来所有使用私有镜像仓库的节点都要配置)
配置完重启docker
3、启动registry容器(未来可以用compose实现)
访问:http://docker02:5000/v2/_catalog
查看私有仓库信息(默认没有什么有用信息)
B.客户端上传镜像
1、客户端docker02,上传镜像
首先也得设置docker配置文件,并重启docker服务
2、再镜像打标签
3、再上传
如果没有提前进行docker配置,会报错
再次访问registry网页,可以看到上传到的镜像
C.客户端下载镜像
2.1.3 写成compose
2.2 企业级镜像仓库–harbor
2.2.1 极速上手
A.服务端部署
1、github下载harbor
2、解压
3、hosts文件修改,添加harbor的域名
4、编辑harbor配置文件
5、安装harbor
注意:
要检查80端口是否被占用
浏览器访问:http://harbor.gs.cn
admin / redhat123
B. 客户端使用
1、配置docker
2、登录harbor
3、打标签
tag的目录要跟harbor中的目录一致!
4、上传
查看上传的镜像
2.2.2 harbor高可用 (了解)
可以通过harbor自带的镜像同步工具实现.(搭建2个harbor服务器),找出harbor的镜像目录(registry目录),目录备份/同步
2.3 Dockerr命令–脑图
https://www.processon.com/view/link/6347dbb207912921d8137498