首页 > 其他分享 >Y73day1学习心得

Y73day1学习心得

时间:2022-11-18 15:14:56浏览次数:43  
标签:容器 RUN 学习心得 nginx usr && Y73day1 local

Y73day1学习心得.md

Y73day1学习心得

一、namespace、cgroup在容器中的作用

1.namespace

Linux namespace是在当前运行的系统环境中创建(隔离)另一个进程的运行环境出来,并在此运行环境中将一些必要的系统全局资源进行【虚拟化】。进程可以运行在指定的namespace中,因此,namespace中的每个进程都认为自己拥有所有这些虚拟化的全局资源。通过以下技术来实现容器间的隔离

fig:

1.1 MNT Namespace

每个容器都要有独立的根文件系统。实现容器里面启服务,并且使用容器运行环境,宿主机主要使用chroot技术把容器锁定到一个指定的运行目录里面。

1.2 IPC Namespace

一个容器内的进程间通信,允许一个容器内的不同进程的(内存、缓存等)数据访问,但是不能跨容器访问其他容器的数据

1.3 UTS Namespace

UNIX Timesharing System包含了运行内核、版本、底层体系结构类型等信息)用于系统标识,其中包含了hostname和域名domainname,它使得一个容器拥有属于自己标识的hostname,独立于宿主机和其他容器

1.4 PIDNamespace

在linux系统中,有一个PID为1的进程(init/systemd)是其他所有进程的父进程,在每个容器内也有一个父进程管理下面的子进程,PID Namespace就是用于隔离不同容器间的进程(PID),容器内的主进程生成与回收子进程等。

1.5 Net Namespace

每个容器都有自己的网卡,监听端口,协议,Net namespace为docker启动了一个vethx接口,docker0,通过mac地址在在网络中进行划分询址。

通过iptables规则去定义容器到外部,外部到容器之间的转发策略。

1.6 User Namespace

用于隔离各容器内重启的用记和用户组名称,或者UID和GID,比如每个容器都有root用户,他们之间是不可以互相访问的。

2.Linux control groups

用于宿主机对容器进行资源分配限制,比如CPU、内存等,Linux Cgroups的全称为Linux Control Groups,它最主要的作用,就是限制一个进程组能够使用的资源上限,包括CPU、内存、磁盘、网络带等,还能够对进程进行优先级设置,以及进程挂起和恢复等操作

2.1 验证系统cgroups

2.2 cgoups中内存模块

2.3cgoups具体实现

blkio: 块设备IO限制
cpu: 使用调试程序为cgroup任务提供cpu的访问
cpuacct: 产生cgroup任务的cpu资源报告
cpuset: 如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存
devices: 允许或拒绝cgroup任务对设备的访问
freezer: 暂停和恢复cgroup任务
memory: 设置每个cgroup的内存限制以及产生内存资源报告
net_cls: 标记每个网络包以供cgroup方便使用
ns: 命名空间子系统
perf_event:增加了对group的监测跟踪的能力,可以监测属于某个特定的group的所有线程以及运行在特定cpu上的线属

2.4 查看系统cgroups

chroot,namespace,cgroups是基础容器运行的必备条件。

二、编排工具及依赖技术总结

1.编排工具

当多个容顺在多个主机运行的时候,单独管理容器是相当复杂而且容易出错,也无法实现某一台主机宕机后容器自动迁移到其他主机从而实现高可用的目的,也不能实现动态伸缩的功能,因此需要有一种可以实现统一管理、动态伸缩、故障自愈、批量执行等功能,这就是容器编制工具

容器编制通常包括

  • docker-compose使容器的操作能够批量的,可视的执行,是一个管理多个容器的工具,比如可以解决容器之间的依赖关系
  • docker swarm docker开发的容器编制引擎
  • kubernetes google领导开发的容器编制引擎,内部项目为Borg,同时支持docker,coreos
  • mesos+marathon 通用的集群组员调度平台,mesos(资源分配)与marathon(容器编制平台)一起提供容器编制引擎功能

2.docker的依赖技术

2.1 容器网络

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

2.2 服务发现

容器的动态扩容特性决定了容器IP也会随之变化,需要一种机制可以动态的发现新创建的容器,并将流量动态转发。kubernetes自带服务发现功能,需要结何coredns服务解析内部域名

2.3 容器监控

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

2.4 数据管理

容器间的动态迁移会导致其在不同的Host之间迁移,需要保证数据也可以正常迁移,可以使用逻辑卷/存储挂载等方式解决

2.5 日志收集

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

三、基于dockerfile制作容器nginx容器镜像

1.下载基础镜像centos.7.16.1810

2.准备dockerfile,安装相关依赖包

先跑一下依赖步骤,看一下有没有报错

From centos:7.6.1810
MAINTAINER jack [email protected]
RUN rpm install -y epel-release && yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools
iotop

可以临时登陆可看一下命令安装情况

3.将nginx源码放入容器进行编译

 

From centos:7.6.1810
MAINTAINER jack [email protected]
RUN rpm install -y epel-release && yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools
iotop
ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make install

 

登陆验证是否编译成功

4.配置文件修改及创建非root用户

将容器内配置文件拷出

docker cp bfdf80159ae3:/usr/local/nginx/conf/nginx.conf .

 


修改配置文件用户
user nginx;

重新编辑dockerfile文件增加拷入配置文件及创建用户操作,同时加入启动nginx命令,完成镜像制作

From centos:7.6.1810
MAINTAINER jack [email protected]
RUN yum install -y epel-release && yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make install
ADD nginx.conf //usr/local/nginx/conf/nginx.conf
RUN useradd nginx -s /sbin/nologin
RUN ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
RUN echo "test nginx page1" > /usr/local/nginx/html/index.html
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]

 

5.后台运行nginx镜像进行测试

页面测试

5 Dockerfile文件详解

#用来定义基础镜像

From centos:7.6.1810
#镜像维护者的信息
MAINTAINER jack [email protected]
#指定该容器运行时的用户名和UID,后续的RUN命令也会使用这个用户执行
#USER
#WORKDIR /a
#WORKDIR b #指定工作目录,最终为/a/b
#VOLUME["/dir_1","dir_2"..]设置容器挂载主机目录
#ENV name jack #设置容器变量,常用于想容器内传递用户密码等
#执行命令,将编译安装nginx的步骤执行一遍
RUN yum install -y epel-release && yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make install
ADD nginx.conf //usr/local/nginx/conf/nginx.conf
RUN useradd nginx -s /sbin/nologin
RUN ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
RUN echo "test nginx page1" > /usr/local/nginx/html/index.html
EXPOSE 80 443 #向外开放的端口,主要是用于声明
CMD ["nginx","-g","daemon off;"] #运行的命令,每个Dockerfile只能有一条,如果有多条则只有最后一条被执行

 

标签:容器,RUN,学习心得,nginx,usr,&&,Y73day1,local
From: https://www.cnblogs.com/jackwu81/p/16903233.html

相关文章

  • 20221320_获奖感言与学习心得
    获奖感言:这其实应该是娄老师第二次给我发奖品,第一次就在娄老师那里收获了一本《暗时间——思维改变生活》。很高兴能够得到娄老师的再次认可,让我在学习《计算机科学概论》......
  • freeRTOS之中断管理学习心得
    移植了FREERTOS后就创建了几个TASK,内核中断和TASK之间一直用共享内存和全局变量进行通讯。这样做对于一个简单的工程来说虽然也没什么,但是随着内容的增加,代码结构会越来越......
  • 第十二章学习心得
    12.1块设备I/O缓冲区I/O缓冲的基本原理文件系统使用一系列I/O缓冲区作为块设备的缓存内存。块设备将信息存储在固定大小的块中,每个块都有自己的地址。对操作系统来说,块......
  • JavaWeb 学习心得体会
    javaweb学习心得时光转瞬即逝,一个学期的javaweb课程完美结束了。我学到了很多知识,例如:Web应用的基本概念与系统架构,JSP编程技术及WebJDBC数据库开发技术等等......
  • 对于邻接表的认识和学习心得
    存图的方式有两种:一.邻接矩阵法(或关联矩阵)就是一个简单的整数型二维数组。二.邻接表法(重点讲解)它是一种顺序存储(结构体数组)和链式存储(链表)结合的存储方法,它......
  • 【学习心得】老男孩Linux课程学习分享,听听我的故事!
    我是老男孩教育Linux班的毕业学员,说一说我的学习感受。首先是费用方面,其实关于费用我没有什么想要说的,但很多小伙伴肯定都关注这点,所以简单分享一下。费用的话,其实......
  • 第六章学习心得
    知识点归纳信号和信号处理;信号和中断的统一处理将信号视为进程中断,将进程从正常执行转移到信号处理信号的来源,包括来自硬件、异常和其他进程的信号信号在Unix/Linux......
  • 10月学习心得体会
    1、主要精力是在学习2门慕课,其中大数据技术完成第3-7章学习,实践练习只是完成部分。Spark基础编程,学习第2章部分内容。比预期进度慢,在搭建大数据开发环境上,在笔记本和台式机......
  • 学习心得 HDFS读数据过程
    HDFS读数据过程   第一步:打开文件。用Fliesystem先申明一个对象,然后生成一个子类DistributedFileSystem,这个时候生成FS的实例对象,其实是分布式文件系统HDFS的实例对象......
  • 初体验!老男孩linux运维班学习心得分享
    以下内容来自学员分享:在来老男孩之前,心里有忐忑,有不安,还有激动和质疑,虽然很多人都说年龄大不适合转行学技术,但想想自己肩上的重担,还是来到了这里。28岁,有房有车,同样有房贷有......