docker/k8s
2024-03-28 13:42:42 2 举报
AI智能生成
登录查看完整内容
docker/k8s 学习总结
作者其他创作
大纲/内容
docker是一个容器管理的软件(平台)
Bridge默认模式,通过127.17.0.1作为默认网关,在iptables中做了DNAT规则
host模式,也可以说是宿主级模式,与宿主级共用一个ip加上宿主机上的端口,网络性能最好,但是宿主级用了的端口,容器不能再用
container模式,新创建的容器与已存在的容器共用分配的ip和端口范围
none模式,没法跟外网通信,自己跟自己玩,安全性高,通过--network=none指定
overlay,不同主机容器通信
网络模式
与虚拟机的区别之一
网络相关
network
进程相关
进程命名空间
类似于管道作用
进程间通信
IPC命名空间
文件系统相关
挂载命名空间
时间相关
UTS命名空间
用户命名空间
六大命名空间
namespace
cgroups
Control Groups
LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术。
LXC可以在操作系统层次上为进程提供虚拟的执行环境,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和swap空间),提供device访问控制,提供独立的namespace。
Sourceforge上有LXC这个开源项目,但是LXC项目本身只是一个为用户提供一个用户空间的工具集,用来使用和管理LXC容器。LXC真正的实现则是靠Linux内核的相关特性,LXC项目只是对此做了整合。基于容器的虚拟化技术起源于所谓的资源容器和安全容器。LXC在资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。
LXC如何实现
kernel lxc
底层隔离机制
启动速度快
cpu、内存、磁盘速度、iops等
资源可以控制
消耗内存小
公用宿主机内核,基础镜像
资源消耗小
HPA
增加和减少容器
扩展方便
容器的文件系统相互隔离,虚拟机的不是
docker优点
隔离没有虚拟机彻底
docker缺点
运行在虚拟机上的应用会通过虚拟机的系统调用,通过虚拟内核再去真实物理机上去执行指令,容器是直接公用真实宿主机的内核
虚拟机是做到了完全隔离,数据保密性比容器好
虚拟机
docker与虚拟机的区别
Dockerfile 是制作镜像的配置文件--》配方文件 --》祖传秘方
==========FROM python:3.9 --》指明基础镜像WORKDIR /app --》指明容器运行起来后,进入容器,会进入到的目录,这个目录我们称呼为工作目录 --》docker exec 命令执行的时候,进入的目录ADD . /app ---》 复制宿主机当前目录下的所有的文件和文件夹到容器里的/app -->背后使用了卷,实现数据共享RUN pip install --trusted-host pypi.python.org -r requirements.txt --》run后面接linux里的命令,这个命令是在制作镜像的时候使用的,是给app.py文件里的需要使用的库,进行安装EXPOSE 80 容器运行的时候暴露那个端口--》对外提供服务的端口ENV NAME World 定义环境变量,容器在运行的时候,可以使用 NAME是变量名 World是值ENV AUTHOR caliCMD [\"python\
FROM busybox 从docker hub下载一个叫busybox的镜像,作为我们自己制作的镜像的基础镜像 base imageCOPY . / 将我们宿主机里的当前目录下所有的文件和目录都拷贝到容器里的/目录下RUN cat /hello 是在制作镜像的时候执行的命令ENTRYPOINT [\"/while.sh\"] 容器启动的时候会执行的命令,让容器启动的时候执行/while.sh脚本
范例
镜像制作(Dockerfile)
Dockerfile
查看docker版本详情
docker version
查看本机中的docker镜像
docker images
在官网中下载docker镜像,如果不指定版本会下载最新的版本
docker pull nginx
查看运行在运行的docker容器有哪些
docker ps
创建一个docker容器,-d在后台运行,-p指定容器的端口映射
docker run -d -p 8080:80 --name fu_nginx nginx
查看容器详细信息
docker inspect fu_nginx
关闭容器
docker stop
删除容器
docker rm
进入容器内部
docker -exec -it fu_nginx /bin/bash
查看容器日志
docker logs fu_nginx
常用命令
卷 volume: 数据持久化、数据共享
docker
不同机器上docker容器的管理和编排
k8s是什么
实现k8s控制功能的软件,控制平面组件有很多个软件,控制组件相当于管理层(党中央),对整个集群进行调度,管理、控制、数据存储等,集群的全盘信息,都在控制平面组件里
控制平面组件(Control Plane Components)
API 服务器是 Kubernetes 控制面的组件, 该组件公开了 Kubernetes API。 API 服务器是 Kubernetes 控制面的前端。其他的node服务器或者master访问的入口,可以通过API 获取整个集群的信息
API Server(接口)
scheduler :调度器,把什么东西调度到哪里?
Scheduler(资源调度)
etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。 --》etcd就是一个数据库
Etcd
controller manager
master上
kubelet(负责维护容器的生命周期)
k-proxy(网络相关)
Pod
node
组成
子主题
资源
1.compose是docker,k8s是CNCF(google等) 2.compose只能在一台宿主机上编排容器,而k8s可以在很多台机器上编排容器
compose(容器编排工具)和k8s的区别?
k8s
Docker/k8s
收藏
0 条评论
回复 删除
下一页