Docker生态工具:Watchtower、slim、ctop、Kitematic、Shipyard、DockerUI、docker-gc、Dockhand、Dry
Docker生态工具管理、可视化系列文章Docker生态工具Watchtower、slim、ctop、KitematicDocker生态工具Portainer、LazyDocker、Dockge、App2DockerDocker生态Arcane、Dockly、Docker-Socket-Proxy、Dockman、DockDash、ServedashWatchtower项目主页即官方文档Go语言实现、轻量级、开源GitHub24.7K Star1.1K Fork容器管理工具专门用于Docker容器镜像的更新自动化。不过代码库已于25年12月17日归档。Watchtower监视容器运行过程能够捕捉到容器中的变化当检测到有镜像发生变化会自动使用新镜像重启容器。本身就是Docker镜像启动容器的方式和别的镜像无异。原理在「指定时间」连接到远程Docker镜像仓库如Docker Hub或私有镜像库检查当前运行的容器是否有镜像更新发现镜像更新就自动拉取最新版本并基于初始部署时所使用的参数优雅地关闭并重建对应的容器默认每隔24小时86400秒检查一次也可根据需要通过WATCHTOWER_POLL_INTERVAL或WATCHTOWER_SCHEDULE环境变量调整检测频率还支持自定义定时策略、滚动更新和通知推送等丰富功能灵活配置自动更新流程满足多样化的场景需求。核心优势自动清道夫模式清理匿名卷--remove-volumes删除废弃镜像--cleanup回收存储空间避免硬盘被撑爆灵活更新策略全自动模式24小时轮询检测手动模式--run-once执行单次更新指定更新精准控制需要更新的容器状态感知能力支持更新停止状态的容器--include-stopped更新后自动启动--revive-stopped自定义检测间隔秒--interval 600实时通知系统支持Gotify、Slack、邮件等通知渠道更新动态尽在掌握不建议在商业或生产环境中使用。开启一个容器用Watchtower来监控docker run -p 4000:80 --name container_name image_name:latest会开始监控指定的容器可分析得到image来源于哪个registry检测是否有新镜像。检测到新镜像则会关掉容器然后用新镜像重启容器。容器会在4000:80公共端口选项上开启。默认情况下轮询Dockder Hub注册表查找更新的镜像。可通过在环境变量REPO_USER和REPO_PASS中添加指定注册表证书来设置轮询私有注册表。实战使用Docker快速部署dockerrun-d\--namewatchtower\--restartalways\-eTZAsia/Shanghai\-eWATCHTOWER_POLL_INTERVAL21600\-eWATCHTOWER_SCHEDULE0 0 4 * * *\-eWATCHTOWER_CLEANUPtrue\-v/var/run/docker.sock:/var/run/docker.sock\containrrr/watchtower解读/var/run/docker.sock主要用来使Watchtower与Docker后台API交互配合定时任务时建议设置时区确保检测时间与本地时间保持一致WATCHTOWER_POLL_INTERVAL用来定义Watchtower的轮询间隔时间单位秒WATCHTOWER_SCHEDULE通过Cron表达式指定时间点WATCHTOWER_POLL_INTERVAL和WATCHTOWER_SCHEDULE选择一个即可WATCHTOWER_CLEANUP设置为true在容器切换到新镜像后自动清理旧版悬空镜像当然也支持基于Docker Compose部署version:3services:watchtower:image:containrrr/watchtowervolumes:-/var/run/docker.sock:/var/run/docker.sockslim开源GitHub23.3K Star832 Fork镜像瘦身工具可通过静态和动态分析。在GitHub Release下载二进制文件添加到路径PATH即可使用。命令docker-slim build --http-probe image_name即可对镜像进行分析进行压缩。实战ctop官网开源GitHub17.8K Star589 Fork容器界面工具可为多个容器提供实时显示的数据视图。实战Mac安装brew install ctop安装后配置DOCKER_HOST环境变量即可使用。运行ctop命令可查看所有容器的状态。运行ctop -a命令仅查看当前运行的容器。KitematicJavaScriptLess实现、开源GitHub12.1K Star1.4K ForkDocker GUI。不过代码库已于25年7月18日归档GitHub页面提供的官网链接跳转到Docker官网官方也建议直接使用Docker Desktop。实战Shipyard官网一个基于Web的开源GitHub6.3K Star882 ForkDocker管理工具支持多host可把多个Docker host上的containers统一管理可查看、构建images提供RESTful API等。不过代码库已于24年2月27日归档、并删库实战安装curl -s https://shipyard-project.com/deploy | bash -s展示所有参数curl -s https://shipyard-project.com/deploy | bash -s -- -h浏览器访问http://localhost:8080输入账号/密码admin/shipyard即可开始体验。Docker UIJavaScriptHTML实现、开源GitHub5.1K Star675 Fork代码库已不再维护最后一次提交是16年12月4日已是10年前。实战基于Docker快速部署体验dockerrun-d-p9000:9000--privileged-v/var/run/docker.sock:/var/run/docker.sock uifd/ui-for-dockerDocker-GC开源GitHub5K Star437 Fork项目用于清理不需要的容器和镜像可删除存在一小时以上的容器、没有容器的镜像也可被当做脚本也可被视为容器。不过项目库已于21年2月2日归档。实战容器方法运行docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e DRY_RUN1 spotify/docker-gc安装Docker socket文件以便和Docker API进行交互。设置环境变量DRY_RUN1用于删除前的确认。Dockhand官网开源GitHub4.9K Star181 Fork现代化、高效的Docker管理应用程序提供实时容器管理、Compose堆栈编排和多环境支持。所有功能都集成在一个轻量级、安全且注重隐私的软件包中。可帮助用户通过Web界面直观地管理和监控Docker容器简化容器作、堆栈部署和可观察性。特点容器管理实时启动、停止、重启和监控容器Compose StacksDocker Compose部署的可视化编辑器Git集成通过Webhook和自动同步从Git仓库部署堆栈多环境管理管理本地和远程Docker主机终端和日志交互式shell访问和实时日志流文件浏览器浏览、上传和下载容器中的文件身份验证通过OIDC实现SSO、本地用户以及可选的RBAC企业级实战基于Docker安装dockerrun-d\--restartunless-stopped\--namedockhand\-p3424:3000\-v/var/run/docker.sock:/var/run/docker.sock\-v$(pwd)/data:/app/data\fnsys/dockhand:latest注意事项Docker Socket权限需要确保运行Dockhand的用户有权限访问/var/run/docker.sock否则无法管理容器数据持久化数据存储在/app/data目录升级前建议先备份数据卷Watchtower上面提到containrrr/watchtower已归档停止维护搜索资料时发现又有一个同名nicholas-fedor/watchtower开源GitHub4.3K Star71 Fork项目也是纯Go实现两者看起来没有关联。Dry项目主页开源GitHub3.3K Star101 Fork、管理并监控Docker容器和镜像的命令行工具与Docker官方自带的命令行工具相比Dry提供交互式操作界面。可更方便和直观的管理容器相关的信息包括对应镜像、容器名称、网络、容器中运行的命令及容器状态。运行在Docker Swarm中的Dry进程还会给出Swarm集群的各种状态信息。不仅可管理本地Docker守护进程也可管理远程的Docker守护进程。前者Docker主机显示为unix:///var/run/docker.sock后者Docker主机显示为tcp://IP Address:Port Number或tcp://Host Name:Port Number。实战安装# 使用预编译的二进制包安装curl-sSfhttps://moncho.github.io/dry/dryup.sh|sudoshsudochmod755/usr/local/bin/dry# mac下可使用brew进行安装Arch Linux下可使用yaourt进行安装命令行下输入dry命令便可启动一个Dry进程默认连接本地Docker守护进程默认运行界面会显示容器的一些基本信息与docker ps命令相比体验更加友好。监控容器运行界面中按下m键即可打开监控模式与docker stats相比更详细彩色输出NAME列方便区分容器管理容器选中容器回车提供查看日志、查看/杀死/删除容器、停止/启动/重启容器、查看容器状态及镜像历史记录等操作查看全部容器F2键即可列出全部容器包括运行中和已关闭的容器监控容器资源利用率点击StatsTop选项查看指定容器的资源利用率或快捷键s来打开容器资源利用率界面查看容器、镜像及本地卷的磁盘使用情况F8键即可查看容器、镜像及本地卷的磁盘使用情况。该界面明确地给出容器、镜像和卷的总数哪些处于使用状态以及整体磁盘使用情况、可回收空间大小的详细信息。管理镜像2键即可列出全部的已下载镜像。删除镜像使用快捷键CtrlE强制删除使用CtrlF查看Docker网络列表按下3键即可查看全部网络及网关其它操作按F1键对列表项目进行排序支持Docker的Services、Stacks管理按下5键或6键切换到相应管理界面。