2022-11-02

namespace、cgroup在容器中的作用:

  1、namespace是Linux系统的底层概念,在内核层实现,即有一些不同类型的命名空间被部署在核内,各个docker容器运行在同一个docker主进程并且共用同一个宿主机系统内核,各docker容器运行在宿主机的用户空间,每个容器都要有类似于虚拟机一样的相互隔离的运行空间,但是容器技术是在一个进程内实现运行指定服务的额运行环境,并且还可以保护宿主机内核不受其他进程的干扰和影响,如文件系统空间、网络空间、进程空间等,docker通过namespace实现了对进程ID,主机名,用户ID,文件名,网络和进程间通信等资源隔离。


2、在一个docker容器中如果不做任何资源限制的话,会造成大量占用宿主机的资源情况,而docker就可以通过cgroup进行CPU、内存、磁盘、网络带宽等资源进行限制,也可以对进程优先级分配,进程控制。

编排工具及依赖技术总结:

docker依赖技术:

  1、容器网络:

    docker自带的网路docker-network仅支持管理单机上的容器网络,当多主机运行的时候需要使用第三方开源网络,如calico,flannel等。

  2、服务发现:

    容器的动态扩容特性决定了容器IP也会随之变化,因此需要有一种机制可以自动识别并将用户请求动态转发到新创建的容器上,kubernetes自带服务发现功能,需要结合kube-dns服务解析内部域名。

  3、容器监控;

    可以通过原生命令docker ps/top/stats 查看容器运行状态,另外也可以使heapster/prometheus等第三方监控工具监控容器的运行状态。

  4、数据管理;

    容器的动态迁移会导致其在不同的host之间迁移,因此如何保证与容器相关的数据也能随之迁移或随时访问,可以使用逻辑卷/存储挂载等方式解决。

  5、日志收集:

    docker原生的日志查看工具docker logs,但是容器内部的日志需要通过ELK,PLG等专门的日志收集分析和展示工具进行处理。

  docker编排工具:

  容器编排通常包括容器管理、调度、集群定义和服务发现等功能。

  1、docker swarm;docker开发的容器编排引擎。

  2、kubernetes: google领导开发的容器编排引擎,支持docker和coreos。

 3、  mesos+marathon:通用的集群组员调度平台,mesos(资源分配)与marathes(容器编排平台)一起提供容器编排引擎功能。

镜像构建总结:

docker构建镜像有两种方式:基于已有容器通过docker-commit命令构建和通过dockerfile文件构建镜像。

通过Dcokerfile构建镜像常用的命令

  1.FROM ->指定base镜像,可以是centos,ubuntu,debian。

  2. MAINTAINER ->设置镜像的作者。

  3.COPY ->将指定目录的文件拷贝到镜像中,COPY支持两种格式:COPY src dest 和 COPY [“src”,”dest”]。

  4.ADD ->将指定目录的文件拷贝到镜像中,但是ADD和COPY之间的区别是ADD可以直接从远程添加文件到镜像中,而COPY不行;ADD是可以添加到镜像镜像的文件系统;而COPY是可以添加到容器的文件系统中。

  5.ENV ->设置环境变量。

  6.EXPOSE ->指定容器中的进程会监听某个端口

  7.VOLUME ->将文件或目录声明为volume

  8.WORKDIR ->为后面的RUN,ENTRYPINT,ADD,COPY指令设置镜像中的当前工作目录

       9.RUN ->在容器中运行指定的命令

  10.CMD ->容器启动时运行指定的命令

  11.ENTRYPOINT ->设置容器启动的命令

通过dockerfile制作nginx镜像










你可能感兴趣的:(2022-11-02)