Docker训练营(五)-Docker容器监控与管理
在本章节中,我们将学习如何有效地监控和管理 Docker 容器,包括使用命令行工具和图形化界面(Portainer)进行容器管理。
注意: 该部分所需要的容器我们可以利用上一节 docker compose 出来的容器来演示。
1. 容器管理基础
1.1 容器生命周期管理
以下是一些最常用的容器管理命令:
1 | # 列出所有容器(包括停止的容器) |
1.2 容器资源监控
Docker 提供了多种方式来监控容器的资源使用情况:
1 | # 实时查看容器资源使用状态 |
2. 容器日志与调试
2.1 日志查看
1 | # 查看容器日志 |
3. 实践练习: 使用 Portainer 对 docker 进行可视化管理
Portainer 是一个轻量级的 Docker 管理工具,提供了直观的 Web 界面来管理 Docker 环境。
3.1 安装 Portainer
1 | # 创建 Portainer 数据卷 |
安装完成后,在 cnb 上我们可以通过添加一个 9000 的端口映射来实现外网访问, 可以按照如下步骤来配置。
点击这个浏览器图标,就可以访问 Portainer 了。
docker run ...
(部署 Portainer)
这条命令虽然长,但每一部分都有其精确的用途,我们来逐一分解:
-d
: 以分离 (detached) 模式在后台运行容器,这对于一个需要长期运行的服务是必须的。-p 9000:9000
:- 进行端口映射。将宿主机的
9000
端口映射到容器内部的9000
端口。 - Portainer 的 Web 服务默认在容器的
9000
端口上运行。通过这个映射,你就可以在你的电脑浏览器中通过访问http://localhost:9000
来打开 Portainer 的管理界面了。
- 进行端口映射。将宿主机的
--name portainer
: 给容器起一个易于识别的名字portainer
。--restart=always
:- 这是一个重启策略 (Restart Policy)。它告诉 Docker 守护进程:“如果这个
portainer
容器因为任何原因(比如程序崩溃、服务器重启)而停止运行,请总是 (always) 自动把它重新启动起来。” - 这对于像 Portainer 这样的基础管理服务至关重要,能确保它的高可用性。其他常见的策略还有
on-failure
(只在因错误退出时重启)和unless-stopped
(除非被手动停止,否则总是重启)。
- 这是一个重启策略 (Restart Policy)。它告诉 Docker 守护进程:“如果这个
-v /var/run/docker.sock:/var/run/docker.sock
:- 这是整条命令中最核心、最特殊的部分。这是一个绑定挂载。
/var/run/docker.sock
是什么? 它不是一个普通文件,而是一个 **Unix 套接字 (Unix Socket)**。你可以把它想象成是宿主机上一个特殊的“文件管道”,所有对 Docker 的操作指令(比如你在终端输入的docker ps
,docker run
等命令)实际上都是通过这个管道发送给在后台运行的 Docker 守护进程(Docker Daemon)来执行的。- 挂载它的作用: 通过这个绑定挂载,你相当于把宿主机上通往 Docker 引擎的“内部电话线”直接接进了
portainer
容器内部。这样一来,Portainer 程序就可以通过这个 socket 文件,向宿主机的 Docker 引擎发送指令并接收信息,从而实现对所有容器、镜像、卷、网络的全面监控和管理。
-v portainer_data:/data
:- 这是一个卷挂载。它将我们第一步创建的
portainer_data
卷挂载到容器内部的/data
目录。 portainer/portainer-ce
这个镜像被设计为将其所有的持久化数据(用户账户、环境配置、栈定义等)都存储在/data
目录下。这个挂载确保了这些数据被安全地写入到portainer_data
卷中,而不是容器短暂的文件系统里。
- 这是一个卷挂载。它将我们第一步创建的
portainer/portainer-ce:latest
:- 指定要使用的镜像:来自
portainer
官方仓库的社区版(portainer-ce
)的最新(latest
)版本。
- 指定要使用的镜像:来自
✅【额外建议或常见错误】
- ❗️安全警告:Docker Socket 的权限
- 将
/var/run/docker.sock
挂载到容器内部,意味着你给予了这个容器极高的权限。一个能够访问 Docker Socket 的容器,理论上可以在宿主机上做任何事情(因为它能以任何方式启动任何其他容器,比如挂载宿主机根目录),这等同于宿主机的 root 权限。 - 因此,你必须绝对信任你所使用的镜像。
portainer/portainer-ce
是官方镜像,是可信的。但绝不要将 Docker Socket 挂载给任何来源不明或你不信任的镜像。
- 将
- 下一步操作
- 当这个命令成功运行后,打开你的浏览器,访问
http://localhost:9000
。 - Portainer 会引导你完成初始化设置:首先是创建一个
admin
管理员用户并设置一个健壮的密码。 - 接着,它会让你选择要管理的环境。因为你把 Docker Socket 挂载进来了,所以直接选择“Local”环境并点击连接即可。随后,你就能在仪表盘上看到所有正在运行的 Docker 资源了。
- 当这个命令成功运行后,打开你的浏览器,访问
- 常见错误:忘记挂载数据卷
- 如果漏掉了
-v portainer_data:/data
这一行,Portainer 依然可以运行。但是,你所有的设置(创建的用户名、密码等)都会保存在容器的临时文件系统中。一旦你因为升级或其他原因删除了这个 Portainer 容器,所有设置都会丢失,下次启动又得从头开始。
- 如果漏掉了
3.2 Portainer 主要功能
仪表盘概览
- 查看环境整体状态
- 监控资源使用情况
- 查看事件日志
容器管理
- 创建、启动、停止、删除容器
- 查看容器日志和统计信息
- 进入容器终端
- 修改容器配置
镜像管理
- 拉取和删除镜像
- 构建新镜像
- 推送镜像到仓库
网络管理
- 创建和管理 Docker 网络
- 配置容器网络连接
数据卷管理
- 创建和删除数据卷
- 管理数据卷权限
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云泥小窝!
评论