docker笔记

容器技术

应用程序仅由较少数量的大组件构成时,可以给每个组件分配专用的虚拟机来隔离他们的环境。但是,组件更小,数量更多时,继续使用虚拟机来隔离得话,会浪费硬件资源,增加人力资源。

Linux容器技术隔离组件

虚拟机和容器
虚拟机
  • 管理程序将物理资源分成较小部分的虚拟硬件资源,从而被虚拟机中的操作系统使用。
  • 系统调用:运行在虚拟机中的应用程序,会执行虚拟机操作系统的系统调用。虚拟机操作系统通过管理程序在宿主机上的物理CPU执行x86指令。
虚拟机和容器对比
  • 容器比虚拟机更加轻量级,虚拟机需要运行自己的一组系统进程,容器不需要。使用容器时,能够也应该让每个应用有一个容器
  • 多个容器会完全执行运行在宿主机上的同一个内核的系统调用。而虚拟机提供完全隔离的环境,每个虚拟机运行在自己的Linux内核。(虚拟机的优点)
  • 运行容器不需要像运行虚拟机一样开机,容器进程可以很快被启动。

容器实现隔离原理

Linux命名空间
  • 使每个进程只看到自己的系统视图(文件、进程、网络接口、主机名等)
Linux控制组cgroups

限制进程能够使用的资源量

docker

什么是docker? docker是一个快速交付,运行应用的容器化技术
docker解决了项目部署过程中的一些问题

  • 大型项目组件多,依赖关系复杂,容易出现兼容性问题. docker将Libs(函数库)、Deps(依赖)、配置与应用一起打包,放到隔离的容器中
  • 开发、测试、生产环境有差异 docker将用户程序与所需要调用的系统库函数一起打包,基于打包的系统库函数,调用内核指令

基本概念

  • 镜像 Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像
  • 容器 镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见
  • 仓库 eg.:DockerHub是一个Docker镜像的托管平台

C/S架构模式

  • Docker客户端 发送命令或者请求到Docker服务端

  • Docker主机 一个物理或者虚拟的机器用于执行 Docker 守护进程。

docker镜像是如何构建的?

1.Docker的客户端和守护进程不要求在同一台机器上

2.Docker客户端将 整个目录的文件 上传到Docker守护进程

3.由Docker守护进程构建新的镜像

tips: 不要在构建目录中包含任何不需要的文件,尤其当Docker守护进程运行在一个远端机器的时候。

docker容器的镜像层

docker镜像由多层构成 docker镜像和虚拟机镜像的一个很大的不同就在于:容器镜像是由多层构成。docker镜像能够在多个镜像之间共享和征用。共享:基于相同基础层的镜像被创建成两个容器时,他们能够读相同的文件。但,容器镜像是只读的,其中一个容器写入某些文件对另外的容器是不可见的。层不仅使得镜像在网络上的分发效率提高,还有助于减少镜像的存储空间。

  • Dockerfile中每一条单独的指令都会创建一个新层。
docker 命令
docker 网络

docker如何处理容器网络访问?
docker0
ip addr Linux命令,查看本机地址

l0 本机回环地址

eth0 阿里云内网地址

docker0 docker0地址

在容器中查看地址:

docker容器间ping
tomcat01 ping tomcat02

容器启动的时候会得到eth@if262 ip地址(docker分配的)

  • 每启动一个docker容器,docker就会给容器分配一个ip
  • 安装了docker,就会有一个docker0网卡(桥接模式,使用evth-pair技术)
  • evth-pair 一对虚拟设备接口,成对出现,充当桥梁,连接各种虚拟网络设备
  • 容器删除,对应的网桥也删除了

不好用

自定义网络

网络模式:

  • bridge
  • none
  • host
    ...

自定义网络,不需要使用 --link 就能够使用名字ping

docker run时,默认有 --net bridg

dockerCompose
  • DockerCompose可用基于Compose文件帮我们快速部署分布式应用
  • Compose文本文件通过指令定义集群中容器如何运行

Kubernetes

Kubernets集群架构

一个Kubernets集群由很多节点组成。

  • 主节点:承载Kubernetes控制和管理整个集群系统的控制面板
  • 工作节点:运行用户实际部署的应用
控制面板
  • Kubernetes API服务器
  • Scheculer:调度应用,为应用的每个可部署组件分配一个工作节点
  • Controller Manager: 执行集群级别的功能,复制组件、持续跟踪工作节点、处理节点失败
  • etcd: 一个可靠的分布式数据存储,能持久化存储集群配置。
工作节点
  • Docker rtk 或其他的容器类型
  • Kubelet: 与API服务器通信,并管理它所在节点的容器
  • kube-proxy: 负责组件间的负载均衡网络流量

式数据存储,能持久化存储集群配置。

工作节点
  • Docker rtk 或其他的容器类型
  • Kubelet: 与API服务器通信,并管理它所在节点的容器
  • kube-proxy: 负责组件间的负载均衡网络流量
相关推荐
Cathy Bryant8 分钟前
矩阵乘以向量?向量乘以向量?
笔记·神经网络·考研·机器学习·数学建模
赶路人儿14 分钟前
dockerfile中CMD和ENTRYPOINT指令
docker
安卓开发者29 分钟前
Docker常用镜像使用指南:从入门到实战
运维·docker·容器
霖.241 小时前
Docker常见问题
服务器·docker·云原生·容器
递归不收敛1 小时前
Conda 常用命令汇总(新手入门笔记)
笔记·conda
荣光波比2 小时前
K8S(十七)—— Kubernetes集群可视化工具Kuboard部署与实践指南
云原生·容器·kubernetes
前端橙一陈2 小时前
Salesforce Developer Edition(开发者版) 搭建测试环境
经验分享·笔记·其他
电子小子洋酱2 小时前
BearPi小熊派 鸿蒙入门开发笔记(4)
笔记·华为·harmonyos
嫄码2 小时前
Docker部署RocketMQ时Broker IP地址问题及解决方案
tcp/ip·docker·rocketmq
摇滚侠3 小时前
Spring Boot 3零基础教程,WEB 开发 通过配置类代码方式修改静态资源配置 笔记32
java·spring boot·笔记