一.docker-compose回顾:
模板命令:
docker-compose.yml version: "3" #最新支持到3.8 https://docs.docker.com/engine/reference/builder/ services: #用来书写当前项目中的那些容器、服务 tomcat: image: hub.c.163.com/library/tomcat #指定使用镜像 container_name: tomcat #指定容器名 ports: #指定端口映射 - "8080:8080" volumes: #数据卷共享 #- /root/apps:/usr/local/tomcat/webapps #使用自定义路径映射数据卷 - tomcatwebapps:/usr/local/tomcat/webapps #使用自动数据卷 networks: #当前服务使用哪个网桥 - tomnet depends_on: #把下列依赖的服务先启动,自己再启动;体现了容器的编排 - mysql - redis healthcheck: #实现docker引擎和容器的心跳检查 test: ["CMD","curl","-f","http://localhost"] interval: 1m30s timeout: 10s retries: 3 ulimits: #修改容器中最大进程数和文件数限制 nproc: 65535 nofile: soft: 20000 hard: 40000 mysql: image: mysql:5.7 container_name: mysql ports: - "3306:3306" volumes: - mysqldata:/var/lib/mysql - mysqlconf:/etc/mysql environment: MYSQL_ROOT_PASSWORD: 123.com #修改环境信息,改root密码 networks: - tomnet redis: image: redis:5.0.10 container_name: redis ports: - "6379:6379" volumes: - redisdata:/data networks: - tomnet command: "redis-server --appendonly yes" #容器执行命令 volumes: #声明上面自动数据卷 tomcatwebapps: #声明数据卷名,自动创建项目名开头的卷名 external: #使用自定义外部卷名 true/false #true 需要提前手动创建这个命名的数据卷 mysqldata: mysqlconf: redisdata: networks: #声明服务的网桥 tomnet: #定义项目开头的网桥名,默认类型bridge external: #是否使用外部提前创建的网桥,true为确定 true ============================================ Docker的监控 Docker自带的监控命令 docker top #容器的动态进程 docker stats #列出每个容器的cpu、内存、io docker logs #查看容器日志 emerg alert crit error warning notice info debug
二、sysdig
轻量级的系统监控程序
docker run -it --rm --name sysdig --privileged=true \ --volume=/var/run/docker.sock:/host/var/run/docker.sock \ --volume=/dev:/host/dev --volume=/proc:/host/proc:ro \ --volume=/boot:/host/boot:ro --volume=/lib/modules:/host/lib/modules:ro \ --volume=/usr:/host/usr:ro sysdig/sysdig //如果下载插件失败,可以运行下边的命令,重新下载 sysdig-probe-loader //下载成功之后,可以运行sysdig命令,查看监控项 csysdig sysdig容器是以privileged方式运行,而且会读取操作系统 /dev,/proc等数据,这是为了获取足够的系统信息。 csysdig view Containers 选择对应容器
sysdig的特点:
(1)监控信息全,包括Linux操作系统和容器
(2)界面交互性强
(3)缺点是sysdig显示的是实时数据,看不到变化和趋势。而且是命令行操作方式,需要ssh到host上执行,不是太方便
三.Weave scope
图形化的显示,能够直观的看到容器资源使用情况,便于理解,监控和控制容器
官方安装命令:
sudo curl -L git.io/scope -o /usr/local/bin/scope sudo chmod a+x /usr/local/bin/scope scope launch 推荐安装命令: sudo curl -L https://github.com/weaveworks/scope/releases/download/latest_release/scope -o /usr/local/bin/scope sudo chmod a+x /usr/local/bin/scope scope launch -app.basicAuth -app.basicAuth.password 123456 -app.basicAuth.username user -probe.basicAuth -probe.basicAuth.password 123456 -probe.basicAuth.username user 使用 Scope: 成功启动scope后,可以在浏览器中方法http://ip:4040,如果端口没有修改默认是4040。之后输入用户名和密码进入监控首页 一般我们可以点击Container查看容器的情况,这里一般会列出你自己的容器和weave自带的容器,通通过名字可以区别。点击相应容器可以对它进行在线bash操作,或者重启,暂停,关闭容器 点击Hosts按钮,可以对自己的主机进行监控和操作,当然也可以在线bash 点击by image可以看到自己现在docker中所有的镜像 PS: scope可以监控单台dockerhost,也可以监控多台的dockerhost,监控 效果只需在运行scope launch 本机IP地址 其他IP地址,不过需要注意的是如果是多台的dockerhost,在运行前,保证主机名不能冲突,区别主机名。若要监控多台dockerhost 以docker01和docker02举例,需要分别运行scope launch 本地ip 另外一台主机ip来实现 [root@docker01 ~]# scope launch 192.168.1.100 192.168.1.101 1c4f97ee6dc2543e32961bd7be155fda256797532a6787807c28c666f9612ab7 Scope probe started Weave Scope is listening at the following URL(s): * http://172.19.0.1:4040/ * http://172.20.0.1:4040/ * http://192.168.10.100:4040/ * http://172.22.16.1:4040/ * http://192.168.122.1:4040/ oot@docker02 ~]# scope launch 192.168.10.101 192.168.10.1003d1f206dda3f5a0aa476b646eccb86814bb48611b11aac771ba60b7e5476875c Scope probe started Weave Scope is listening at the following URL(s): * http://192.168.10.101:4040/ * http://192.168.122.1:4040/
谢谢大家今天的学习。