第一周作业
1 namespace、cgroup 在容器中的作用
Namespace 可以将容器划分为不同的逻辑单元,每个 Namespace 内的容器只能访问自己所属的资源,从而实现资源的隔离。
通过为每个 Namespace 设置资源配额和限制,可以确保不同 Namespace 内的容器无法耗尽整个集群的资源。
Namespace 可以用于实现安全隔离,确保不同的应用程序或用户之间的数据和操作不会相互干扰或泄露。
Cgroup 允许为每个容器分配特定的资源配额和限制,如 CPU 使用率、内存使用量等。这样可以确保容器不会耗尽整个系统的资源,提高系统的稳定性和可靠性。
Cgroup 可以将系统资源划分为不同的逻辑组,每个组内的容器共享同一组资源,但与其他组的容器隔离。这样可以确保容器之间的资源不会相互干扰,实现资源的隔离。
Cgroup 允许为每个容器设置优先级和调度策略,以确保重要的容器能够优先获得系统资源。这有助于提高关键应用程序的性能和可靠性。
Cgroup 提供了丰富的性能监控指标和统计信息,可以用于监视容器的资源使用情况,识别性能瓶颈并进行调优。
2 编排工具及依赖技术总结
编排工具:
Kubernetes:由Google开源的容器编排和管理平台,用于自动化部署、扩展和管理容器化应用程序。
Docker Swarm:Docker 官方提供的容器编排工具,用于在多个 Docker 主机上运行和管理应用程序。
Apache Mesos:开源的分布式系统内核,支持容器化应用程序的部署和资源管理。
Nomad:HashiCorp 公司提供的开源集群调度器,用于在多种类型的工作负载之间调度和管理资源。
OpenShift:由Red Hat提供的基于Kubernetes的容器平台,用于构建、部署和管理容器化应用程序。
依赖技术:
容器技术:如 Docker、containerd 等,用于将应用程序和其依赖项打包到容器中,并提供跨平台的部署和执行环境。
服务发现:例如 etcd、Consul 等,用于在集群中发现和定位服务实例,以便应用程序可以相互通信。
负载均衡:如 nginx、HAProxy 等,用于在多个容器之间分发流量,并提高应用程序的可用性和性能。
存储卷和持久化存储:如 NFS、GlusterFS、Ceph 等,用于在容器中实现数据持久化和共享存储。
日志收集和监控:例如 Prometheus、ELK Stack(Elasticsearch、Logstash、Kibana)、Grafana 等,用于收集、存储和可视化容器的日志和监控数据。
安全性:如容器镜像扫描工具、身份验证和授权服务等,用于保护容器化应用程序和基础设施的安全。
自动化和持续集成/持续部署(CI/CD):如 Jenkins、GitLab CI、Spinnaker 等,用于自动化构建、测试和部署容器化应用程序。
3 基于 dockerfile 制作一个 nginx 镜像
FROM nginx:latest
LABEL maintainer="superdai 15130495867@163.com"
ADD nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
4 镜像构建总结
选择基础镜像:通常从已有的基础镜像开始构建,基础镜像包含了操作系统和一些基本的软件包。选择合适的基础镜像对于构建特定类型的应用程序非常重要。
编写 Dockerfile:Dockerfile 是描述镜像构建步骤的文本文件。在 Dockerfile 中,你可以定义从基础镜像中构建的镜像应该如何配置和组织。这包括添加软件包、复制文件、设置环境变量等。
安装依赖:根据应用程序的需要,你可能需要在镜像中安装一些依赖项,比如软件包、库文件等。这通常通过在 Dockerfile 中使用适当的包管理工具(如 apt、yum、pip、npm 等)来完成。
复制文件:将应用程序的代码和配置文件复制到镜像中的合适位置。你可以使用 Dockerfile 中的 ADD 命令来完成这个任务。
暴露端口:如果你的应用程序需要监听网络请求,你需要在 Dockerfile 中使用 EXPOSE 命令来声明容器内部监听的端口。
设置启动命令:使用 CMD 或 ENTRYPOINT 命令来指定容器启动时执行的默认命令。这通常是启动应用程序的命令。
构建镜像:使用 docker build 命令根据 Dockerfile 构建镜像。在构建过程中,Docker 会执行 Dockerfile 中定义的步骤,并生成最终的镜像文件。
标记镜像:在构建完成后,使用 docker tag 命令给镜像添加标签,以便更容易地识别和使用。
推送镜像:如果需要,在构建完成后,你可以使用 docker push 命令将镜像推送到远程镜像仓库,以便其他人或服务器可以访问该镜像。
测试镜像:在将镜像部署到生产环境之前,建议进行镜像的测试。可以通过在本地容器中运行镜像,并执行一些测试来验证镜像的正确性和稳定性。
浙公网安备 33010602011771号