当前位置: 首页 > news >正文

docker 基础手册

文章目录

  • docker 基础手册
    • docker 容器技术
    • 镜像与容器
    • 容器与虚拟机
    • docker 引擎
    • docker 架构
    • docker 底层技术
    • docker 二进制安装
    • docker 镜像加速
    • docker 相关链接
    • docker 生态

docker 基础手册

docker 容器技术

  • 开源的容器项目,使用 Go 语言开发
  • 原意“码头工人”,开发人员将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何运行容器引擎的环境中,以容器形式运行该应用程序
  • Container 容器
  • 为应用程序的开发、发布和运行提供了一个基于容器的标准化平台(Docker平台)

镜像与容器

  • 容器通过运行镜像来启动,镜像是一个可执行的软件包
  • 容器是镜像可运行的实列
  • 镜像是用于创建 Docker 容器的只读模板
  • 关系对照:对象与类的关系

容器与虚拟机

  • 容器更具轻量化
    在这里插入图片描述

docker 引擎

  • 架构:c/s 架构
  • 主要包含组件
    • 服务器端:Docker 守护进程(创建和管理 Docker 对象:镜像、容器、网络等)
    • REST API:程序与 Docker 守护进程交互的接口,便于编程方式操作平台和容器
    • 客户端:命令行接口,使用 docker 命令进行操作,通过使用命令的方式控制 Docker 守护进程
  • 是当前使用最为广泛的容器引擎
  • 可用于 Linux 和 Windows 服务器操作系统,基于 Containerd 项目实现(行业标准创建的核心容器运行时服务)

在这里插入图片描述

docker 架构

在这里插入图片描述

Docker客户端

  • 交互的主要途径
  • 我们一般在服务器上安装 Docker 引擎的时候,也会一起安装客户端(Docker-client)
  • Docker 命令使用 Docker API

Docker守护进程

  • 守护进程监听来自 Docker API 的请求:管理镜像、容器、网络、卷这样的 Docker 对象
  • 守护进程之间也可以通信
  • 一台主机运行一个 Docker 守护进程,也叫 Docker 主机

Docker注册中心

  1. 用来存储 Docker 镜像
  2. DockerHub 最大的镜像存储地址,也可以自己搭建,常见的企业镜像仓库有 harbor 镜像仓库

Docker对象

Docker 的主要工作就是创建和使用各类对象

  • 镜像、容器、网络、卷、插件

docker 底层技术

早期的 docker

基于成熟的 Linux Container (LXC)技术

从0.9版本开始

采用新的容器技术 libcontainer

当前版本

底层依赖的核心技术包括了 Linux 操作系统内核的名称空间、控制组、联合文件系统

名称空间 namespace

  • 提供隔离的工作空间,是对全局系统资源的一种封装隔离技术,不同的名称空间拥有彼此独立的全局系统资源
  • 名称空间类型
    • Cgroup:控制组,隔离控制组根目录,Linux 4.6 版本版本提供
    • IPC:进程间通信,隔离进程间通信所需的资源
    • NETWORK:网络,为进程提供网络资源的隔离,拥有独立的网络环境(网络设备接口、协议栈、路由表、防火墙规则等)
    • Mount:挂载,为进程提供磁盘挂载点和文件系统的隔离能力
    • PID:进程ID,同一个进程在不同的名称空间中进程ID不同
    • USER:用户,隔离用户
    • UST:主机名或域名的隔离
  • docker 利用这一个特性实现了资源的隔离,其实容器本质上也是进程,不同容器内的进程属于不同名称空间,彼此透明,互不干扰

控制组 Cgroup

Control Group 底层技术

  • Linux 内核提供限制、审计、隔离进程组或单个进程所使用的物理计算资源的一种机制
  • 控制组可以对共享资源进行
    • 资源限制:CPU、内存、存储空间
    • 优先级:优先得到更多的 CPU 或磁盘 IO
    • 资源审计:一个控制组的资源使用情况被监测和计量(docker stats
    • 隔离:为控制组隔离名称空间,让一个控制组不能访问另一个控制组的进程、网络、文件系统
    • 控制:可以对进程组执行暂停、恢复、重启操作
  • 上面说了,每个容器都是相关隔离的一个或者一组进程,我们可以将这一个或者一组进程作为一个控制组进行管理

联合文件系统 UnionFS

将其他文件系统合并在一个联合挂载点的一种特殊文件系统

  • 通过创建层来操作,非常轻巧和快速
  • 有多种变体:AUFS、OverlayFS、Btffs、BFS等
  • 是 docker 镜像实现的技术基础

docker 二进制安装

二进制

  1. 安装前的一些通用条件
禁用防火墙和selinux
设置主机名和/etc/hosts文件解析
设置正确的时间同步
  1. 下载二进制包并安装
tar xzvf docker-xxx.tgz
cp docker/* /usr/bin/
useradd -s /usr/sbin/nologin -M docker
  1. 生成 systemd 服务管理文件
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
Requires=docker.socket 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
EOF
  1. 生成 docker.socket 文件
cat > /usr/lib/systemd/system/docker.socket << EOF
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=docker
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
  1. 启动和配置服务
systemctl enable docker --now
### 查看启动状态
systemctl start docker
  1. 配置 docker 存储目录
cat > /etc/docker/daemon.json <<EOF
{
"data-root": "/data/docker"
}
EOF### 重启生效
systemctl daemon-reload
systemctl restart docker
docker info | grep Dir

ubuntu在线安装

官方参考地址:Install Docker Engine on Ubuntu | Docker Docs

### 卸载旧版本
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; donerm -rf /var/lib/docker

在这里插入图片描述

##  使用apt存储库安装
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpgecho \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装特定版本

### 查看版本
apt-cache madison docker-ce | awk '{ print $3 }'### 安装
VERSION_STRING=5:23.0.6-1~ubuntu.20.04~focal
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

查看状态并验证

systemctl enable docker --now
systemctl status docker
docker run hello-world

在这里插入图片描述

docker 镜像加速

Docker Hub 部署在境外服务器,国内私有网络访问可能有点慢,我们可以配置数据中心的镜像加速来提高拉取镜像的速度

  • /etc/docker/daemon.json 文件中新增配置项
"registry-mirrors": ["<镜像加速地址>"]
  • 重启生效即可
systemctl daemon-reload
systemctl restart docker

docker 相关链接

[Docker 所支持的平台](Install Docker Engine | Docker Docs)

[Docker 引擎官方手册](Docker Engine overview | Docker Docs)

[Docker 命令官方手册](Use the Docker command line | Docker Docs)

[Docker Compose 命令手册](Overview of docker compose CLI | Docker Docs)

[Dockerd 命令手册](dockerd | Docker Docs)

在这里插入图片描述

docker 生态

  • 核心技术:容器运行时(Runtime)为容器运行提供底层的运行环境,容器引擎(Docker)支持容器管理类,镜像仓库(DockerHub)支持镜像的存储和发布
  • 支持技术:网络、存储、安全等
  • 平台技术:Docker Swarm、K8s 等容器管理平台技术提供容器集群管理功能

相关文章:

docker 基础手册

文章目录 docker 基础手册docker 容器技术镜像与容器容器与虚拟机docker 引擎docker 架构docker 底层技术docker 二进制安装docker 镜像加速docker 相关链接docker 生态 docker 基础手册 docker 容器技术 开源的容器项目&#xff0c;使用 Go 语言开发原意“码头工人”&#x…...

记一次SPI机制导致的BUG定位【不支持:http://javax.xml.XMLConstants/property/accessExternalDTD】

1、前因 今天在生产环境启用了某个功能&#xff0c;结果发现有个文件上传华为云OBS失败了&#xff0c;报错如下&#xff1a; Caused by: java.lang.IllegalArgumentException: 不支持&#xff1a;http://javax.xml.XMLConstants/property/accessExternalDTDat org.apache.xal…...

Kali如何启动SSH服务并实现无公网ip环境远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …...

谷粒商城配置虚拟机

一、创建虚拟机 之前有在VM里面建一个ubuntu的虚拟机&#xff0c;准备拿来直接用&#xff0c;网络设置为NAT模式&#xff0c;查看我的虚拟机是虚拟机&#xff1a;192.168.248.128 主机&#xff1a; 192.168.2.12。可以互相ping通。 二、linux安装docker Docker docker是虚拟…...

Java中文乱码浅析及解决方案

Java中文乱码浅析及解决方案 一、GBK和UTF-8编码方式二、idea和eclipse的默认编码方式三、解码和编码方法四、代码实现编码解码 五、额外知识扩展 一、GBK和UTF-8编码方式 如果采用的是UTF-8的编码方式&#xff0c;那么1个英文字母 占 1个字节&#xff0c;1个中文占3个字节如果…...

【前端基础--3】

文字样式 1.文字颜色 color 取值方式&#xff1a; 英文单词 red green blue十六进制的颜色值 #000000 也可以写为#000&#xff08;如aabbcc可以简写为abc&#xff09;rgb三原色取值 color&#xff1a;rgb(220,32,215) 取值范围都在0~255之间 2.文字大小 font-size …...

Obsidian笔记软件结合cpolar实现安卓移动端远程本地群晖WebDAV数据同步

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

51单片机电子密码锁Proteus仿真+程序+视频+报告

目录 视频 设计分析 系统结构 仿真图 资料内容 资料下载地址&#xff1a;51单片机电子密码锁Proteus仿真程序视频报告 视频 单片机电子密码锁Proteus仿真程序视频 设计分析 (1)能够从键盘中输入密码&#xff0c;并相应地在显示器上显示‘*’&#xff1b; (2)能够判断密码…...

[BSidesCF 2020]Had a bad day

先看url&#xff0c;发现可能有注入 http://655c742e-b427-485c-9e15-20a1e7ef1717.node5.buuoj.cn:81/index.php?categorywoofers 试试能不能查看index.php直接?categoryindex.php不行&#xff0c;试试伪协议 把.php去掉试试 base64解码 <?php$file $_GET[category];…...

[笔记]事务简介-springboot

在Spring Boot中&#xff0c;事务的管理通常通过注解来实现&#xff0c;使得配置变得简单而直观。这种方式与Spring Boot的设计理念一致&#xff0c;即减少显式配置&#xff0c;增加自动配置。以下是如何在Spring Boot项目中应用和管理事务的详细说明&#xff1a; Spring Boot中…...

初识计算机网络 | 计算机网络的发展 | 协议初识

1.计算机网络的发展 “矛盾是普遍存在的&#xff0c;矛盾是事物联系的实质内容和事物发展的根本动力&#xff01;” 计算机在诞生之初&#xff0c;在军事上用来计算导弹的弹道轨迹&#xff01;在发展的过程中&#xff08;商业的推动&#xff0c;国家政策推动&#xff09;&…...

【sgTree】自定义组件:加载el-tree树节点整棵树数据,实现增删改操作。

特性 可以自定义主键、配置选项支持预定义节点图标&#xff1a;folder文件夹|normal普通样式多个提示文本可以自定义支持动态接口增删改节点可以自定义根节点id可以设置最多允许添加的层级深度支持拖拽排序&#xff0c;排序过程还可以针对拖拽的节点深度进行自定义限制支持隐藏…...

vue2面试题:vue组件之间的通信方式有哪些?

vue2面试题&#xff1a;vue组件之间的通信方式有哪些&#xff1f; 回答思路&#xff1a;1.组件通信的目的-->2.组件通信的分类-->3.组件通信的方案1.组件通信的目的2.组件通信的分类3.组件通信的方案&#xff08;1&#xff09;通过props传递数据&#xff08;2&#xff09…...

Pytorch神经网络模型nn.Sequential与nn.Linear

1、定义模型 对于标准深度学习模型&#xff0c;我们可以使用框架的预定义好的层。这使我们只需关注使用哪些层来构造模型&#xff0c;而不必关注层的实现细节。 我们首先定义一个模型变量net&#xff0c;它是一个Sequential类的实例。 Sequential类将多个层串联在一起。 当给…...

C++-gdb调试常用功能

文章目录 启动gdb运行程序设置断点运行控制查看源码查看信息查看变量线程相关 gdb调试常用功能如下&#xff0c;其中bin为要调试的程序&#xff0c;arg为参数 启动gdb 启动调试 gdb bin带参数启动 gdb --args bin arg1 arg2so预加载LD_PRELOAD/path/to/lib.so && gdb …...

快速上手的AI工具-文心一言辅助学习

前言 大家好晚上好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工…...

Boost 适用 filesystem 库,statx 函数无法找到引用问题的解决方案。

1、boost 高版本使用了 statx 函数&#xff0c;这个函数是在 Linux 内核版本 4.11 之后引入的。 所以&#xff1a;可以升级 Linux 内核版本到4.11之后即可。 2、降低 boost 库版本到 1.70 以下 3、正确的路&#xff0c;改 boost 的编译代码 先看这个&#xff1a; Filesyste…...

MyBatis中一级缓存是什么?SqlSession一级缓存失效的原因?如何理解一级缓存?

一级缓存是SqlSession级别的&#xff0c;通过同一个SqlSession查询的数据会被缓存&#xff0c;下次查询相同的数据&#xff0c;就 会从缓存中直接获取&#xff0c;不会从数据库重新访问 使一级缓存失效的四种情况&#xff1a; 1) 不同的SqlSession对应不同的一级缓存 2) 同一…...

项目解决方案:多地医馆的高清视频监控接入汇聚联网

目 录 一、背景 二、建设目标及需求 1.建设目标 2.现状分析 3.需求分析 三、方案设计 1.设计依据 2.设计原则 3.方案设计 3.1 方案描述 3.2 组网说明 四、产品介绍 1.视频监控综合资源管理平台介绍 2.视频录像服务器和存储 2.1概述 2.2存储设计 …...

【前端基础--2】

选择器优先级 style标签中&#xff1a; .text{color: pink;}div{color: red;}#box{color: skyblue;} body标签中&#xff1a; <div class"text" id"box">猜猜我是什么颜色的</div> 运行结果&#xff1a; 选择器优先级权重&#xff1a; id选…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...