CNCF x Alibaba云原生技术公开课 第二章 容器基本概念

1、容器基于进程

进程的特点

  • 进程之间是可以相互通信的:高级权限进程可以攻击其他进程
  • 共享同一份文件系统(对同样一份文件进行读写操作):对数据的增删差改,某些进程可以把其他进程需要的文件删除掉,进程各自所需要的依赖会相互冲突
  • 同样的一份系统资源:资源抢占问题,单一应用消耗很大的cpu和内存,使得某些进程资源不够,无法提供服务

容器基于进程,如何解决进程的这三个问题

  • namespace技术:资源视图的隔离
  • chroot:linux和unix可以通过chroot将子目录变成根目录
  • cgroup:限制资源使用率(docker要将systemd改成cgroup)

2、Dockerfile与docker基本操作

  • FROM 行表示以下的构建步骤基于什么镜像进行构建,正如前面所提到的,镜像是可以复用的;
  • WORKDIR 行表示会把接下来的构建步骤都在哪一个相应的具体目录下进行,其起到的作用类似于 Shell 里面的 cd;
  • COPY 行表示的是可以将宿主机上的文件拷贝到容器镜像内;
  • RUN 行表示在具体的文件系统内执行相应的动作。当我们运行完毕之后就可以得到一个应用了;
  • CMD 行表示使用镜像时的默认程序名字。

Alpine

直接通过 apk 命令直接查询和安装各种软件。

docker build  -t ImageName:TagName dir
-t 给镜像加一个Tag
ImageName 给镜像起的名称
TagName 给镜像的Tag名
Dir Dockerfile所在目录

docker pull/push
docker commit containerID  ones:v1 #将正在运行的容器提交成镜像
docker save imagesID > ones.tar #此处的imagesID为提交的镜像ID
docker stop containerID && tar zcf ones.tar.gz /var/lib/docker/volumes/ones-data #将环境停止并备份打包数据
docker load < ones.tar #将镜像导入到B环境中
docker run --name containerName -d imagesID --mount source=ones-data,target=/data -p 80:80 -p443:443 #此处的端口映射为默认值可自定义
docker tag imagesID ones:v1

3、容器的生命周期

容器运行时的生命周期

  • docker run:选择一个镜像来提供一个独立的文件系统,并指定相应的运行程序initial进程
  • initial进程启动退出,容器也启动退出
  • 容器内除了initial进程还有其他进程。
  • initial进程管理范围:initial进程产生其他子进程+docker exec产生的运维操作
  • initial进程退出,管理范围内的资源都会释放,以防止资源泄露。这波操作引发的问题:容器产生的数据会丢失(容器可能是有状态的,比如redis和mysql)。解决方案:重要数据持久化到指定目录(该目录称之为数据卷)

数据卷的管理方式

  • 通过bind,将宿主机的目录挂载在容器内。 docker run -v 宿主机目录:容器目录 …。缺点:需要对所有宿主机的目录进行统一管理
  • 将目录管理交给moby运行引擎(moby依赖的最重要的组件是containerd(容器运行时管理引擎,独立于moby daemon))
    • docker create volume xx,使用docker创建一个数据卷,docker管理它。docker run -v volume名称xx:容器目录

虚拟机

  • 安装虚拟机:使用hypervisor虚拟化技术来模拟CPU、内存等硬件资源,在宿主机上构建了一个Guest OS(独立的内核ubuntu、centos等)
  • 更好的隔离效果,但
    • 需要一部分的资源去运行Hypervisor
    • Guest OS占用大量的磁盘空间(windows10-30G,ubuntu5-6G)
    • 启动比较慢

容器

  • 独立的文件系统,需要提供镜像(所需的所有文件集合)
  • 进程级别的隔离,未来向着强隔离的方向发展(比如kata、gVisor等)
  • 启动时间快于vm,磁盘占用小于vm

4、课后习题

问题一:已运行 docker run -d -t —name demo ubuntu top 命令,以下哪个 docker 命令创建出的容器能看见 demo 容器进程 B
A.docker run --name demo-x --net container:demo ubuntu ps
B.docker run --name demo-x --pid container:demo ubuntu ps
C.docker run --name demo-x --ipc container:demo ubuntu ps

IPC(POSIX/SysV IPC)命名空间提供了相互隔离的命名共享内存、信号灯变量和消息队列。

问题二:以下哪个 docker 命令可以用来创建一个使用宿主机主机名的容器? A
A. docker run --uts=host ubuntu hostname
B. docker run ubuntu hostname
C. docker run --ipc host ubuntu ps

–uts=“” : Set the UTS namespace mode for the container,
‘host’: use the host’s UTS namespace inside the container
UTS命名空间用于设置主机名和对该命名空间中正在运行的进程可见的域。默认下,所有的容器,包括那么以–network=host运行的容器,有它们自己的UTS命名空间。设置UTS为host将使容器使用与主机相同的UTS命名空间。注意–hostname在host UTS模式是无效的。
当你想在主机更改hostname之后,同时也更改同样的hostname到容器,这就需要与主机共享UTS命名空间。一个更高级的用例是从容器更改主机的hostname。

问题三:已运行 docker run -d -t —name demo ubuntu top 命令, 在 demo 这个容器内看到 top 命令的 PID 是什么? B
A.随机数字
B. 1

-d是后台运行,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上

问题四:如何快速判断 docker daemon 是否支持动态接管运行容器? AB
A. docker info | grep ‘Live Restore Enabled’
B. docker info -f ‘{{.LiveRestoreEnabled}}’
C. docker info -f “{{.Live_Restore_Enabled}}”

问题五:容器重启
创建容器时添加参数 --restart=always 后,当 docker 重启时,容器自动启动。
docker -d :后台运行容器,并返回容器ID;

问题六: docker inspect
显示一个容器的具体配置信息
docker inspect demo -f ‘{{.State.Pid}}’ demo启动进程的pid

问题七:docker run -d -t --name demo ubuntu top
docker exec -it demo kill -9 1强行给容器内一号进程发kill信号,容器是否会退出? 答案:否

问题八:已运行 docker run -d -t —name demo ubuntu top 和 docker run --name demo-x --pid container:demo ubuntu ps 命令,是否可以在 demo-x 容器内部停止容器? 答案:是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cncf × alibaba云原生技术公开课》23讲的知识点自测主要包括以下内容。 首先,课程介绍了云原生技术基本概念和原则。云原生技术是一种构建和管理容器化、可弹性伸缩的应用程序的方法。它包括容器技术、微服务架构以及自动化管理等多个方面的内容。 其次,课程介绍了云原生技术的核心工具和框架,例如Kubernetes、Docker等。Kubernetes是一个用于自动化部署、扩展和管理应用程序的开源容器编排平台。Docker是一个用于创建和运行容器的开源工具。 接着,课程详细介绍了Kubernetes的架构和工作原理。Kubernetes包括Master节点和Worker节点,Master节点负责管理整个集群的状态和调度任务,Worker节点负责运行容器。课程还介绍了如何使用Kubernetes进行应用程序的部署、扩展和管理。 除此之外,课程还涉及了云原生安全、监控和日志管理等方面的知识。云原生安全是保护容器、微服务和整个云原生架构的安全措施。监控和日志管理是为了实时监测系统的运行状态,收集和分析系统的日志,以便及时发现和解决问题。 最后,课程介绍了云原生技术的未来发展趋势。随着云原生技术的成熟和普及,它将在更多领域得到应用,例如大规模云计算、物联网和边缘计算等。 综上所述,《cncf × alibaba云原生技术公开课》23讲主要涵盖了云原生技术基本概念和原则、核心工具和框架、架构和工作原理、安全、监控和日志管理等方面的知识,并展望了云原生技术的未来发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值