按照计划,应该分享云原生模块的相关知识,主要就是目前广泛使用的容器运行引擎docker和容器编排平台k8s。今天就docker展开,还有了解下最近呼声比较高的容器引擎podman。豆荚男?
docker基础操作
详细的基础操作之前有写过,这里就简要分享用来复习。再推荐下docker的学习网站,因为人家做的更专业值得我们学习。
常用命令:
1. 镜像管理
- docker images:列出本地镜像
- docker search:搜索镜像
- docker pull:拉取镜像
- docker rmi:删除镜像
2. 容器管理
- docker ps:列出运行中的容器
- docker ps -a:列出所有容器
- docker run:运行容器
- docker start/stop/restart:启动/停止/重启容器
- docker rm:删除容器
- docker kill:强制停止容器
- docker inspect:查看容器详细信息
- docker logs:查看容器日志
- docker attach/exec:进入运行中的容器
- docker cp:从容器中拷贝文件/目录到本地
3. 容器rootfs命令
容器的rootfs目录存放在/var/lib/docker/overlay2下(storage driver为overlay2时),常用命令有:
- ls /var/lib/docker/overlay2:查看所有容器 layers
- cd /var/lib/docker/overlay2/容器ID:进入容器层
- ls:查看容器内文件结构
- cat文件:查看容器内文件内容
这些命令在调试容器的时候会很有帮助。
4. 网络管理
- docker network ls:列出网络
- docker network inspect:查看网络详细信息
- docker network create:创建网络
- docker network connect/disconnect:连接/断开容器和网络
- docker network rm:删除无用网络
5. 存储管理
- docker volume ls:列出数据卷
- docker volume inspect:查看数据卷详细信息
- docker volume create:创建数据卷
- docker volume rm:删除数据卷
6. Dockerfile管理
- docker build:从Dockerfile构建镜像
- docker history:查看镜像构建历史
- docker tag:为镜像打标签
7. 其他命令
- docker info:查看Docker系统信息
- docker version:查看Docker版本
- docker stats:查看容器资源使用统计信息
- docker system df:查看Docker磁盘使用情况
- docker system prune:清理无用数据
- etc.
推荐学习:
1. 官方文档
这个没的说,不管使用什么产品,官方肯定是最准确最及时的
代码语言:javascript复制https://docs.docker.com/
2. play with docker
强烈推荐!真的很好用,有免费时长让你练习,练习基础命令够够的了。
官网地址:
代码语言:javascript复制https://labs.play-with-docker.com/
3. docker入门到实践
可以说是相当详细了,从什么是docker,为什么用docker以及安装使用,基本面面俱到了。
代码语言:javascript复制https://docker-practice.github.io/zh-cn/
这里其他也有很好的学习资源就不一一推荐了,掌握基础命令并实践,学会docker真的很轻松。
再分享一些关于docker的运维小技巧:
1. 查看Docker系统信息
使用docker info可以查看Docker系统的详细信息,包括:
- 存储驱动(Storage Driver)
- 镜像数(Images)
- 容器数(Containers)
- 运行容器数(Running Containers)
- 主机OS(Operating System)
- 内核版本(Kernel Version)
命令:
代码语言:javascript复制docker info
2. 查看Docker磁盘使用情况
Docker的磁盘使用情况,包括镜像、容器和数据卷所占用的空间。
命令:
代码语言:javascript复制docker system df
3. 查看Docker内存和CPU使用
Docker Desktop和Docker Engine都提供了查看内存和CPU使用的功能。
在Docker Engine上,可以安装dockmon来查看内存和CPU metrics:
代码语言:javascript复制docker run -d --name dockmon --restart=always -v /var/run/docker.sock:/var/run/docker.sock ukhomeofficedigital/dockmon:v0.7.1
然后访问http://localhost:8080 就可以查看Docker主机的metrics。
4. 查看Docker日志
Docker的日志存放在/var/lib/docker/containers下的json文件中,可以通过docker logs命令查看container的日志。
也可以开启json-file或syslog日志驱动,并指定日志文件位置。Docker会将容器的日志输出到该文件中,方便查看。
5. 监控Docker资源
可以使用第三方监控工具来监控Docker的各项资源使用情况和性能指标,如:
- Cadvisor:监控CPU、内存、文件系统和网络资源
- Prometheus:时序数据库,可以收集cadvisor等exporter的数据并存储
- Grafana:将Prometheus数据进行可视化,方便查看各metrics
- Node Exporter:采集Docker host metrics
6. 镜像以及容器备份恢复
1. docker save
docker save可以将镜像另存为归档文件,例如:
代码语言:javascript复制docker save -o ubuntu.tar ub
untu
这会将ubuntu镜像导出为ubuntu.tar文件。
2. docker load
docker load可以将归档文件(通常是.tar格式)载入到本地镜像仓库,例如:
代码语言:javascript复制docker load -i ubuntu.tar
这会将ubuntu.tar文件加载为本地镜像,名称同原镜像(ubuntu)。
3. docker export
docker export可以将容器中运行的应用导出为归档文件,例如:
代码语言:javascript复制docker export -o nginx.tar nginx-container
这会将nginx-container容器导出为nginx.tar文件。
4. docker import
docker import可以将归档文件导入为镜像,例如:
代码语言:javascript复制docker import nginx.tar nginx-image
这会将nginx.tar文件导入为nginx-image镜像。
5. docker commit
docker commit可以将容器状态保存为镜像,例如:
代码语言:javascript复制 docker commit nginx-container nginx-image
这会将nginx-container容器的状态提交为nginx-image镜像。
通过以上几个命令,可以实现Docker镜像与容器的备份、迁移与恢复:
- docker save/load:实现镜像的导出/导入,用于镜像备份与迁移
- docker export/import:实现容器应用的导出/导入,用于容器备份与迁移
- docker commit:可以保存容器状态为镜像,实现容器备份
掌握了以上这些,基础使用就没问题了。
podman
最近podman还是比较火,我看官网,最近桌面版本1.1.0发布了,我这就安装使用了下,详细的使用情况后面分享,就先介绍下大致情况。
更新说明:
代码语言:javascript复制https://podman-desktop.io/blog/podman-desktop-release-1.1
podman是一款容器引擎,与Docker类似,可以在Linux系统上运行OCI兼容的容器。
Podman与Docker的主要区别是:
1. Podman不需要守护进程(daemon),Docker需要启动Docker daemon后才能使用。
2. Podman的容器默认使用rootless模式运行,不需要root权限。Docker的容器默认需要root权限。
3. Podman使用Libpod作为其容器引擎,而Docker使用自己的引擎。
4. Podman可以兼容Docker CLI命令,方便Docker用户迁移。但也有自己的podman命令。
Podman的优点主要是:
1. 无需守护进程,更轻量级
2. rootless模式,安全性更高
3. 兼容Docker,降低用户迁移成本
兼容性:
支持平台:
Linux、macOS、Windows
兼容 Docker API、Lima、Kind、Openshift Local、Podman Machine
安装方式:
代码语言:javascript复制https://podman-desktop.io/downloads
今天的分享就到这了,祝学习生活顺利!