docker基础

2023-10-27

docker背景

以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务例如: pid=2 --> python pid=3–>java pid4–>php ,三个服务可能会相互影响
使用者期望将这三个不同的服务,跑在不同的运行时环境中实现相互不影响,同时不会增加服务器成本。

延伸出能否将这三种服务分别封装起来——》KVM虚拟化技术,实现了一个操作系统模拟多个操作系统/不同的运行时环境。
随着技术发展,虚拟化技术开销较大(例如:只要运行一个python脚本,想要使用虚拟化方式实现,还需要安装一个操作系统,并不方便/合理)
延伸出容器技术;
虚拟化层的抽象层(用户层)剥离,使用docker engine来替代(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大减小了开销。
docker引擎对内核版本是有要求的(至少是3.8+)
docker 需要cgroups(Linux内核态中资源管理的模块) 的资源管理功能

如何实现应用之间的隔离

在操作系统中,是通过namespaces(名称空间、命名空间)实现的,只要实现以下6个空间隔离,才能认为两个应用实现了完全/完整隔离。

容器隔离了6个名称空间(namespace资源隔离-用容器化技术封装入
mount  文件系统,挂载点;一个文件系统内,不能重复挂载一个指定目录,例如:/mnt
user     操作进程的用户和用户组
pid       进程编号
uts       主机名和主机域
ipc       信号量、消息队列,共享内存(理解,不同的应用调用内存资源的时候应该使用不同的内存空间)
net       网络设备、网络协议栈、端口等

pid命名空间:进程隔离(PID:进程ID)。
net命名空间:管理网络接口(NET:网络)。
ipc命名空间:管理访问IPC资源(IPC:进程间通信)。
mnt命名空间:管理文件系统挂载点(MNT:mount) 。
uts命名空间:隔离内核和版本标识符。(UTS:Unix时间共享系统)

docker与虚拟化的区别

不同点 container vm
启动速度 秒级 分钟级
运行性能 接近原生(直接在内核中运行  90%) 50%损耗
磁盘占用 MB GB

数量

成百上千 一般几十台
隔离性 进程级别 系统级别(更彻底)
操作系统 主要支持Linux 几乎所有
封装程度 只打包项目代码和依赖关系,共享宿主机内核 完整的操作系统,与宿主机隔离

docker的使用场景

  • 打包应用程序简单部署
  • 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
  • 持续集成和持续交付(CI/CD):开发到测试发布
  • 部署微服务
  • 提供PAAS产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于LAAS、Docker(K8S) 属于PAAS}

Docker的优势

  1. docker引擎统一了基础设施环境:docker环境------》image------>封装一个简易的操作系统(3.0+G)
  2. docker引擎统一了封装应用(装箱/封装-类比于集装箱)方式:docker镜像一》 images
  3. docker 引擎统一了运行时环境:docker容器一 》基于镜像——》运行为容器(可运行的环境)实现了一次构建、多次、多处使用

docker引擎(Docker Engine)

Docker Engine是具有以下主要组件的客户端-服务器应用程序:
server端:服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
CLENT端:REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
命令行界面(CLI)客户端(docker命令)。

docker的架构(docker architecture)

Docker使用客户端-服务器架构。Docker 客户端与Docker
守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。

Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快

Docker Client:客户端/提供一个与用户交互,展示的平台+管理、控制docker服务端(功能)的工具

Docker客户端( docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker APT。 Docker客户端可以与多个守护程序通信。
Docker daemon:守护进程

Docker 守护程序( dockerd))侦听 Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理pocker服务。
Docker images:镜像

存储镜像的地方,默认在公共的Docker Hub上查找,可以做个人仓库(registry harbor)

容器可以被打包成镜像
Docker container:容器
Docker registry:镜像仓库

存储镜像的地方,默认在公共的Docker Hub上查找,可以做个人仓库(registry harbor)

docker三大组件

镜像:一组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础环境(泛指操作系统环境),可以理解为容器的模板
容器:基于镜像的一种运行时状态
仓库:存放image镜像﹐仓库大类: 1、公共仓库—》docker hub 2、私有仓库 registry和harbo

控制组( Control groups)

Linux上的Docker引擎还依赖于另一种称为控制组
( cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker
Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。

部署20版docker

安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2   #docker存储驱动,lvm2资源控制的工具

设置阿里云镜像源

cd /etc/ yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 安装docker-ce 社区版

yum install -y docker-ce

启动

systemctl start docker
systemctl enable docker

配置镜像加速器

阿里云官网免费申请!

 

网络优化

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
systemctl restart network
systemctl restart docker

 

 docker-server端配置文件

{
"gragh": "/data/ docker"           数据目录
"storage-driver": "overlay2",     存储引擎LXC-》overlay —》overlay2
"insecure-registries": ["registry.access.redhat.com", "quary.io"]  私有仓库
"registry-mirrors": [ "https:/lq" ] 镜像加速
"bip": "172.168.80.50/24",              docker网络
"exec-opts" :[ "native.cgroupdriver=systemd" ],启动时候的额外参数(驱动)
"live-restore": true                当docker容器引擎挂掉的时候,使用docker跑起来的容器还能运行(分离)
}

 以上是建议的配置项
docker 的网络建议和宿主机的IP"对照”,这样方便在故障发生时,更容易定位故障节点位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker基础 的相关文章

随机推荐

  • 在 Python 中如何实现类的继承,方法重载及重写?

    作者 苏凉 py 来源 CSDN博客 今天我们将进入类的继承以及对类的方法重写及重载的学习 话不多说直接进入正题 类的继承 如果要编写的类是另一个现成类的特殊版本 那我们就可以使用继承 一个类继承另一个类时 将自动获得另一个类的所有属性和方
  • 使用 FFmpeg 生成 ts 切片并使用 AES-128 加密

    前言 最近有个需求 需要将服务器视频资源进行加密提供给客户端播放 防止用户盗用视频 常用的加密方式 m3u8切片加密 本文使用 各种在线播放视频的网站广泛使用的技术 切片同样是使用AES加密算法 优点 各种浏览器 手机 小程序都能兼容 通用
  • CommonJS、AMD、CMD、ES Module

    依赖前置和依赖就近 RequireJS采用依赖前置 举个例子就是炒菜前一次性把所有食材洗好 切好 根据内部逻辑把有些酱料拌好 最后开始炒菜 前面任何一个步骤出现问题都能较早发现错误 SeaJS的依赖就近就是要炒青椒了去切青椒要炒肉了去切肉
  • docker容器资源控制cgroup

    命名空间 六种 namespace 资源配额 cgroups mount t cgroup cd sys fs cgroup cd memory 默认是没有限制 现在更改内存使用 free m mount t cgroup bc 1024
  • 金额转化中文算法

    最近要项目中用到了把数字类型的金额 1029 89元 转换成中文书写的方式 一仟零贰拾玖点八九元 参考了一些其他人写的算法 总觉得有些不太完善或者不严谨 例如10100转换成 十万一千元 还是 十万零一千元 我看到的一些算法都是转换成了前者
  • 解放生产力,社媒运营人还能这样玩转ChatGPT?

    相信大家这段时间都被ChatGPT刷屏了吧 东哥我也不例外 基本上一打开社媒平台都是在讨论ChatGPT 那社媒运营人应该如何使用ChatGPT呢 东哥今天就跟大家唠唠 利用ChatGPT写广告标语 广告文案 运营人常常为广告标语 广告文案
  • 一碗云南米线,加剧速食食品赛道“内卷”?

    说起云南 人们的印象往往是藏在苍山洱海 玉龙雪山里的风花雪月 然而 生活中最常见的 滇味 却是一碗鲜香美味 软中带劲的米线 近年来 从广西的螺蛳粉到河南的酸辣粉 越来越多带着地域特色的主食被装进小小纸桶 成为速食食品行业的新品类 如今 云南
  • 非科班进大厂必备算法

    基础数据结构的融合是成为庞大系统的基石 比如 Redis 中的跳跃表 数据库索引 B 树等 只有对基础的数据结构足够的熟悉才能更容易去理解稍微复杂的结构 就仿佛我们闯关打怪一样 一步一步解锁直到结局 今天想和大家一起分享的是常见数据结构以及
  • @Lazy标签解决问题的原理

    Lazy原理解析 文章目录 Lazy原理解析 1铺垫知识点 2 lazy解决问题原理 3 lazy为什么不能用在原型模式中 4其他解决循环依赖的办法 最近在重构一个国重项目的时候 用 lazy解决了循环依赖的问题 在自己的类中又依赖了自己
  • 图像恢复系列(11)之修复(inpainting)

    十一 图像恢复 修复 27 WaveFill A Wavelet based Generation Network for Image Inpainting 图像修复旨在用逼真的内容完成图像缺失或损坏的区域 当前流行的方法通过使用生成对抗网
  • 金山文档手机app服务器异常,为什么我的手机看不了金山文档 看不了金山文档怎么办...

    1 手机wps上找到 我的office 点击上面的 登录wps 使用有关的账号登录 2 使用的QQ账号登录 登录成功 就可以使用wps的云文档功能了 可以将文档加入文档 只要在电脑上登录就可以同步查看了 3 在菜单当中找到 打开 在 导入到
  • 推荐三款最好用的压缩/解压软件

    写在前面 推荐三款特别好用的压缩 解压软件 Bandizip WinRAR 7 Zip 这三款软件也分别代表了三种常用的压缩格式 zip rar 7z 压缩格式 格式 优点 速度 zip 兼容性好 快 rar 私有格式 中 7z 压缩率高
  • 数据库架构在美团点评的演变实践

    前言 IT时代的缩影基本被CPU 操作系统 数据库这三大核心领域 支撑了半个世纪人类的商业科技文明 本文讲到美团点评数据库的演变 首先从数据库的简史讲起 把数据库划分成三个时代 分别就是关系型数据库时代 NoSQL时代 NewSQL时代 下
  • 【Kaggle】Stable Diffusion 竞赛(2023 年 5 月 11 日版本,准确率 0.59 + )

    一 第一部分讲解 mkdir p kaggle images from PIL import Image from pathlib import Path images list Path kaggle input stable diffu
  • android 轮播图_两步路户外助手谷歌卫星图终极解决方案

    不点蓝字 我们哪来故事 国庆节前 教大家一步步搞回了两步路 户外助手 的 谷歌卫星图 和 路网 错过的朋友可以看之前的文章 快速找回 两步路 户外助手 的谷歌卫星图 路网 但是文章发出后陆续收到一两个驴友反馈 路网是回来了 但是还是没有谷歌
  • linux ssh权限设置,linux 让ssh只允许指定的用户登录的权限设置

    方法一 只允许ssh指定用户登录权限的设置 SSH远程登录的权限直接影响服务器的安全 为ssh设置合理的用户权限是必须的 查看ssh版本的命令 ssh v 设置ssh只允许指定用户登录的方法 在 etc ssh sshd config文件中
  • 【mysql5.7开启 binlog】

    今天发现数据库连接不上了 一看服务器 家被人偷了 库还在只剩下一个表README 以下数据库已被删除 xxx xxx 我们有完整的备份 要恢复它 您必须向我们的比特币地址xxxx支付0 028比特币 BTC 如果您需要证明 请通过以下电子邮
  • grafana设置Alert阈值和邮件报警

    首先我们需要在机器上开启smtp 25服务 这里有一个坑 注意 云主机为了防止滥发邮件已经封掉了smtp的所有通信 所以云主机发邮件是有问题的 安装sendmail ubuntu用apt centos用yum 安装好后一般自动就跑起来了 n
  • 单例模式由浅入深(C# 版)

    单例模式由浅入深 C 版 有时候 我们希望某类只有一个实例 这样的好处是 1 可以实现数据共享 2 避免大量的创建销毁实例的操作 提高性能 为了实现单例模式 通常做法是 1 将构造函数私有化 避免外部直接new对象 2 对外提供一个方法来返
  • docker基础

    docker背景 以linux而言 linux操作系统会有一个主进程pid 1派生出其他进程来控制不同服务例如 pid 2 gt python pid 3 gt java pid4 gt php 三个服务可能会相互影响 使用者期望将这三个不