简介:Compose是用于定义和运行多容器Docker应用程序的工具,通过Compose,使用yml文件来配置应用程序所需要的所有服务,对多服务应用进行统一部署。
0. 容器内问题排查命令
先进入容器:docker exec -it container-id sh/bash;
A. 测试网络是否互通:ping ip;
B. 测试容器端口是否开通:nc -zv ip port;
1、安装与卸载
A. 下载docker-compose工具;
B. 设置docker-compose可执行文件权限:chmod +x /usr/local/bin/docker-compose;
C. 测试是否安装成功:docker-compose --version;
D. 卸载:rm /usr/local/bin/docker-compose。
2、三个步骤
A. 使用Dockerfile定义应用程序的环境,为每个服务构建需要的镜像;
B. 使用docker-compose.yml定义构成应用程序的服务,他们在隔离环境中一起运行;
C. 执行docker-compose up命令来启动并运行整个应用程序,如:docker-compose -f file.yml up -d;
D. 停止或重启服务:docker-compose -f file.yml stop/restart。
3、docker-compose.yml配置文件
4. 重用配置
& <<:*的用法后续补充
B. 服务编排要想按照指定启动顺序的话,docker提供的depends_on或links,只能保证服务依赖也相应启动,但是无法保证启动成功后,再启动其他服务,目前比较好的就是wait-for-it.sh脚本实现;
5. 服务远程调试参数
6. 重启策略(restart_policy):restart_policy判断依据是进程退出(Container process exited)或内存溢出(killed by out of memory);
A. 参数condition的三种状态
none:要容器退出就重启容器;
on-failure:在容器非正常退出时(退出状态非0),才会重启容器;
any:默认策略,在容器退出时不重启容器;
B. docker容器的退出状态码
0:表示容器正常退出,例如 stop 容器;
非0:表示容器退出异常(退出状态码采用 chroot 标准),例如执行 docker run 失败后的容器退出;
125:Docker 守护进程本身有错误;
126:容器启动后,要执行的默认命令无法调用;
127:容器启动后,要执行的默认命令不存在;
其他状态码:容器启动后在容器内部执行命令,该命令退出时的返回状态码,就作为容器的退出状态码;
查看容器状态码:
8. Portainer
A. 生成密码工具:htpasswd -nb -B admin "your-password" | cut -d ":" -f 2,另 htpasswd是basic认证基于文件实现时,用到的账号密码生成工具,yum install -y httpd;
B. 部署命令,注意$符号要转义,在每一个$前面再加一个$即可:
9. 将docker容器里应用日志输出到控制台
A. Docker将容器日志存储在默认位置/var/lib/docker中,每个容器都有一个特定其ID的JSON日志,如:
B. 一般应用程序都有自己的日志,比如nginx的access_log,如果想在portainer里查看其日志,需要将日志转到标准输出(STDOUT)或错误输出(STDERR)中,docker打镜像操作如下:
制作镜像时建立软连接,容器运行时,可将任何的自定义应用日志,转到标准输出和标准错误输出上,然后通过docker logs命令查看日志。
10. 容器健康检查health
A. 健康检查是用来弥补之前进程级的检查策略restart的问题,如容器依赖服务未启动成功或容器内存溢出等仍无法工作,所以要引入细粒度的健康检查,比如端口级探测;
B. 监控检查状态
starting:容器仍在启动时的初始状态;
healthy:如果命令成功,则容器是健康的;
unhealthy:如果运行状态检查失败且超过重试次数就宣布容器是不健康的,但一旦后续有一次检查成功,容器就回到healthy状态。
C. 配置参数
interval:两次健康检查的间隔,默认30s;
timeout:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就视为失败,默认30s;
retries:当连续失败指定次数后,则将容器状态视为unhealthy,默认3次;
start_period(3.4版本才支持):应用启动的初始化时间,在启动过程中的监控检查失效不会计入,默认0s,注意如果在启动期间健康检查成功,则认为容器已启动,所有连续失败的情况都将计入最大重试次数,而且如果上面三个参数设置不合理会导致服务一直重启。
D. 使用方式
可参考:docker-compose.yml配置参数详解
docker volume目录挂载方式
docker logs原理
docker容器的health健康状态检查