Docker基本原理与常用命令

1 docker 架构

image.png

K8S:CRI(Container Runtime Interface)

Client: 客户端;操作docker服务器的客户端(命令行或者界面)

Docker_Host:Docker主机;安装Docker服务的主机

Docker_Daemon:后台进程;运行在Docker服务器的后台进程

Containers:容器;从镜像创建的运行实例.可以被启动, 开始, 停止, 删除.每个容器都是互相隔离的. 也可以把容器看作是一个简易的linux系统(包括root用户权限,进程空间, 用户空间,网络空间等)和运行在其中的应用程序.

Images:镜像、映像、程序包;Image是只读模板,其中包含创建Docker容器的说明。容器是由Image运

行而来,Image固定不变。

Registries:仓库;存储Docker Image的地方。官方远程仓库地址:https://hub.docker.com/search

 

2 Docker隔离原理

namespace 6项隔离 (资源隔离)

  实际上,Linux 内核实现 namespace 的一个主要目的就是实现轻量级虚拟化(容器)服务。在同一个 namespace 下的进程可以感知彼此的变化,而对外界的进程一无所知。这样就可以让容器中的进程产生错觉,认为自己置身于一个独立的系统中,从而达到隔离的目的。也就是说 linux 内核提供的 namespace 技术为 docker 等容器技术的出现和发展提供了基础条件。
  我们可以从 docker 实现者的角度考虑该如何实现一个资源隔离的容器。比如是不是可以通过 chroot 命令切换根目录的挂载点,从而隔离文件系统(Mount)。为了在分布式的环境下进行通信和定位,容器必须要有独立的 IP、端口和路由等,这就需要对网络进行隔离(Network)。同时容器还需要一个独立的主机名以便在网络中标识自己(UTS)。接下来还需要进程间的通信(IPC)、用户权限(User)等的隔离。最后,运行在容器中的应用需要有进程号(PID),自然也需要与宿主机中的 PID 进行隔离。也就是说这六种隔离能力是实现一个容器的基础,下面是linux提供的能力:

image.png

cgroups资源限制 (资源限制)

cgroup提供的主要功能如下:

资源限制:限制任务使用的资源总额,并在超过这个 配额 时发出提示

优先级分配:分配CPU时间片数量及磁盘IO带宽大小、控制任务运行的优先级

资源统计:统计系统资源使用量,如CPU使用时长、内存用量等

任务控制:对任务执行挂起、恢复等操作

group资源控制系统,每种子系统独立地控制一种资源。功能如下:

image.png

Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。

基础的小linux系统。jdk;一般而言,Dockerfile可以分为四部分:基础镜像信息, 维护者信息, 镜像操作指令, 启动时执行指令。

 
指令说明
指令说明
FROM 指定基础镜像
NAINTAINER 指定维护着信息,已经过时,可以使用LABEL maintainer=xxx来替代
RUN 运行命令v
CMD 指定启动容器时默认的命令
ENTERPOINT 指定镜像的默认入口,运行命令
EXPOSE 声明镜像内服务监听的端口
ENV

指定环境变量。可以在docker run 的时候使用-e改变,会被固化到image的config里面

ADD 复制指定的src路径下的内容到容器中的dest路径下,src可以为url会自动下载,可以为tar文件会自动解压
COPY 复制本地主机的src路径下的内容到镜像中的dest路径下,但不会自动解压。
LABEL 指定生成镜像的元数据标签信息
VOLUME 创建数据卷挂载点
USER

指定运行容器时的用户名或者UID

WORKERFDIR 配置工作目录,为后续的RUN、CMD、ENTERPOINT指定配置工作目录
ARG

指定镜像内使用的参数,可以在build的时候,使用--build-args改变

OBBUILD  配置当创建的镜像作为其他镜像的基础镜像时,所指定的创建操作命令
STOPSIGNAL 容器退出的信号值
HEALTHCHRCK 健康检查
SHELL 指定使用shell时的默认shell类型
posted @   小兵要进步  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)

侧边栏
点击右上角即可分享
微信分享提示