1.Docker概念

news2024/11/25 10:48:44

文章目录

  • Docker
    • 概念
    • Docker容器与虚拟机的区别
    • 内核中的2个重要技术
    • Linux Namespace的6大类型
    • docker三个重要概念
    • 部署Docker
      • yum安装
      • 二进制安装

Docker

概念

  • docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
  • docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的app),并且容器开销极其低。
  • 是一种轻量级的“虚拟机”,是在Linux容器里运行应用的开源工具
  • Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2J2K7Pax-1689668830045)(E:\Typora\images\image-20230718111231454.png)]

  • 容器化越来越受欢迎,因为容器是:

    • 灵活:即使是最复杂的应用也可以集装箱化。
    • 轻量级:容器利用并共享主机内核。
    • 可互换:可以即时部署更新和升级。
    • 便携式:可以在本地构建,部署到云,并在任何地方运行。
    • 可扩展:可以增加并自动分发容器副本。
    • 可堆叠:可以垂直和即时堆叠服务。
  • 容器引擎:docker、containerd、podman、rocket

Docker容器与虚拟机的区别

  • 容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
  • 虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
区别docker虚拟机
内核使用共享宿主机的操作系统内核拥有独立的操作系统内核
启动速度启动速度快,秒级速度启动速度较慢,分钟级
性能接近云原生,几乎无损耗过hypervisor对主机进行虚拟访问,会占用更多的资源,最大损耗将近百分之五十
容量单机容量成百上千几十个
隔离namespace(命名空间)隔离资源,cgroup资源限制完全隔离

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-neeKlwCB-1689668830046)(E:\Typora\images\image-20230718114003082.png)]

内核中的2个重要技术

  • docker容器本质就是宿主机的一个进程,docker容器是通过namespace(命名空间)实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。

Linux Namespace的6大类型

项番类型功能说明解释
NO.1MNT Namespace提供磁盘挂载点和文件系统的隔离能力使得每个进程只能看到自己的文件系统挂载点和文件系统层次结构
NO.2IPC Namespace提供进程间通信的隔离能力使得每个进程只能看到自己和同一命名空间中的进程的进程间通信(IPC)机制
NO.3Net Namespace提供网络隔离能力使得每个进程只能看到自己的网络接口和路由表,从而实现网络隔离
NO.4UTS Namespace提供主机名隔离能力使得每个进程只能看到自己的主机名和域名
NO.5PID Namespace提供进程隔离能力使得每个进程只能看到自己及其子进程的进程树
NO.6User Namespace提供用户隔离能力使得每个进程只能看到自己和同一命名空间中的进程的用户和用户组

docker三个重要概念

  1. image镜像

    • docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下一个已经做好的镜像来直接使用
    • 创建容器的基础,就是一个可执行的压缩包,是一个只读模板 ,包含运行应用程序的所有资源
    • Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板
    • 通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件
    • Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。
  2. container容器

    • docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序
    • 基于镜像创建的运行实例,容器间是相互隔离的
  3. repostory仓库

    • 仓库是集中存储镜像文件的地方,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag) 仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下载,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务。
    • 用于集中存放镜像的地方,可分为公有仓库与私有仓库
    • 当下一次使用这个镜像的时候,只需要从仓库中获取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwsokjD3-1689668830046)(E:\Typora\images\image-20230718123216410.png)]

Docker的镜像、容器、日志等内容都默认存储在 : /var/lib/docker

部署Docker

yum安装

####防火墙设置
####关闭 selinux 与防火墙


systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
###安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2 


-----------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
-----------------------------------------------------------------------------------------
###设置阿里云镜像源

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

在这里插入图片描述

###安装 Docker-CE并设置为开机自动启动

yum install -y docker-ce docker-ce-cli containerd.io
 
systemctl start docker.service
systemctl enable docker.service 



-----------------------------------------------------------------------------------------
##安装好的Docker系统有两个程序,Docker服务端和Docker客户端。
##其中Docker服务端是一个服务进程,负责管理所有容器。 
##Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。
##大部分情况下Docker服务端和客户端运行在一台机器上。
##查看 docker 版本信息

docker version

在这里插入图片描述

二进制安装

cd /opt/

##解压软件包
tar zxvf docker-19.03.9.tgz


##移动配置文件到系统中
mv docker/* /usr/bin
###创建systemctld系统管理命令


vim /usr/lib/systemd/system/docker.service


[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
###启动并设置开机自启

systemctl daemon-reload
systemctl enable docker
systemctl start docker
systemctl status docker

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/774838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PostgreSQL内核学习(三)—— 查询重写】

查询重写 查询重写系统规则视图和规则系统ASLO型规则的查询重写规则系统与触发器的区别 查询重写的处理操作定义重写规则删除重写规则对查询树进行重写 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果&#xff0c…

王道计算机网络学习笔记(4)——网络层

前言 文章中的内容来自B站王道考研计算机网络课程,想要完整学习的可以到B站官方看完整版。 四:网络层 ​​​​​​​​​​​​​​在计算机网络中,每一层传输的数据都有不同的名称。 物理层:传输的数据称为比特(Bi…

宝塔的Redis绑定IP

宝塔安装Redis 软件商店搜索Redis 连接宝塔面板的redis服务器失败的解决办法 检查Linux是否放行6379端口修改Redis绑定IP检查阿里云/腾讯云的防火墙策略是否放行6379端口 1.bind 127.0.0.1 修改为 bind 0.0.0.0 127.0.0.1 表示只允许本地访问,无法远程连接 0.0.0.0 表…

基于Python的用户登录和密码强度等级测试|Python小应用

前言 那么这里博主先安利一些干货满满的专栏了! 这两个都是博主在学习Linux操作系统过程中的记录,希望对大家的学习有帮助! 操作系统Operating Syshttps://blog.csdn.net/yu_cblog/category_12165502.html?spm1001.2014.3001.5482Linux S…

Micro-app vue3+vite+ts用法

前言: 微前端的概念是由ThoughtWorks在2016年提出的,它借鉴了微服务的架构理念,核心在于将一个庞大的前端应用拆分成多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用融合为一个…

文库小程序在线阅读下载文档模板流量主小程序

一、什么是文库小程序? 文库小程序连接流量主,具体流程是粉丝进入小程序下载文档模板,下载前需要看广告,阅读后可以免费下载文档模板。具体的小程序演示请参见抖音云云文库 二、文库小程序的应用范围 小程序主要实现文档共享功能…

Redis Linux安装

Redis版本下载,版本地址http://download.redis.io/releases/ 点击跳转 新建文件夹 mkdir /usr/local/redis 上传压缩包,并使用命令解压tar -zxvf redis-6.2.8.tar.gz (redis-6.2.8.tar.gz为安装包) 安装依赖 yum install gcc-c 编译 make 安装 make install 修改配置 …

概率论和随机过程的学习和整理20:条件概率我知道,但什么是条件期望?可用来解决递归问题

目录 1 目标问题: 什么是条件期望? 条件期望有什么用? 2 条件期望,全期望公式 3 条件期望,全期望公式 和 条件概率,全概率公式的区别和联系 3.1 公式如下 3.2 区别和联系 3.3 概率和随机过程 4 有什…

Zabbix“专家坐诊”第200期问答汇总

问题一 Q:想请问下大佬们,我们zabbix最近有误告警的情况,这个怎么排查呢? 用了proxy,我看了proxy和server的日志,除了有慢查的日志,其它没有异常日志输出。 A:看下这个unreachable的…

首次与电商平台战略签约 第一三共与阿里健康达成战略合作

7月18日,阿里健康与第一三共在杭州正式签署战略合作协议。双方宣布将在此前合作基础上,全面深化心脑血管、风湿骨外科等疾病领域的合作深度,探索以患者为中心、以数字化为驱动力的创新型医药健康服务模式。据悉,此次合作是第一三共…

椒图--分析中心和后台管理中心

护网的时候我们要把右边的开关开启。开启就会对系统全量的记录,包含有网络行为日志,就会检测我们服务器里面的链接,端口箭头,内内网暴露的链接;进程操作日志,就可以看我们系统创建了哪些进程,就…

融云出海:不止假发出口和四卡四待手机,「非洲市场」的参差与机遇

↑ 点击预约“融云北极星”直播↑ 点击预约“实时社区”直播 比白皮书更精炼省流,比图谱更实用有效。 融云《社交泛娱乐出海作战地图》,被多位大咖标记为出海人必备工作手册。针对地图的核心模块,我们推出了系列解读文章,更详尽…

Redis数据持久化的两种方式

说明:Redis数据是存储在内存中的,Redis服务被关闭,数据是会被清除的。但Redis有数据持久化机制,在默认情况下,停止Redis服务会触发数据持久化机制,将数据保存下来,在下次启动时再读取出来。 Re…

解决spring security No AuthenticationProvider found for com.问题

No AuthenticationProvider found for com.xxx.xx 原因 当你验证过,后记得这个这里返回true。不然,就会出现既没有异常,又没验证返回通过的中间尴尬状态,security会当做没有验证通过来处理。 修改

HCIA-存储虚拟化

1、虚拟化概述 KVM是所有云平台的底座,虚拟化是所有云的基础,虚拟化只提供基础架构,云可以提供服务。 CNA是个定制的欧拉系统EulerOS,基于centos内核只保留和虚拟化相关的代码,CNA默认已经部署好kvm虚拟化的软件。CNA…

Visutal Studio2022 如何使用Github copilot

visual studio 2019 升级最新版本的2019也并没有搜索到,直接升级到visual studio 2022,看发布介绍也是2022的copilot Copilot 是一款由 OpenAI 开发的基于 GPT 模型的代码生成工具,可帮助开发者更快地编写代码。如果想在 Visual Studio 中使…

基于大模型的属性操作生成高效训练数据

概述 这篇论文的研究背景是关于利用大型语言模型(LLM)生成高效训练数据的方法。 以往的方法通常是通过LLM生成新的数据,但缺乏对生成数据的控制,这导致了生成数据的信息不足以反映任务要求。本文提出了一种基于LLM的属性操作生成方法,通过精…

如何应对客户报价要求过低的情况?这些方案帮你化解危机!

有个客户在寄样品之前让报价,并且要求承诺价格必须低于15美金,业务员同意了,让客户把样板安排寄到中国,但是收到样品后发现客户的样品在侧面还有一块突出的部分,所以15美金太低了,无论如何也得18美金&#…

计组4——总线Plus IO

(CPU外部的)总线 用于连接computer3大模块(MC/GPUIO) CPU内部的片内总线判优由时序逻辑实现 composition& priority-judging 通信方式 CPU内部的片内总线用于取指、译码、执行、中断的数据通信; IO 总线分为控制线、数据线和地址线,对IO设备的…

Error:Invalid or corrupt jarfile xxx.jar

现象 上传jar包,执行报错:Error:Invalid or corrupt jarfile xxx.jar 解决办法 本地正常执行,上传服务器执行报错。排查发现是因为文件不完整导致,重新上传,比对文件大小,一致后重新执行成功&…