docker 基础手册

news2024/12/25 9:48:40

文章目录

  • 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; done

rm -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.gpg


echo \
  "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 等容器管理平台技术提供容器集群管理功能

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

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

相关文章

【C++练级之路】【Lv.7】【STL】vector类的模拟实现

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、成员变量二、默认成员函数2.1 constructor2.2 destructor2.3 copy constructor2.4 operator 三、迭代器…

Vue3+TS+dhtmlx-gantt实现甘特图

实现样式 因为只做展示&#xff0c;所以实现很简单 实现功能 自定义列头增加斑马线&#xff0c;实际结束时间&#xff08;自定义实现&#xff09;自定义进度展示&#xff0c;根据层级让进度背景颜色变浅marker标记今天自定义提示框内容 实现 import { gantt } from "d…

某顺cookie逆向

目标网站:aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v 这个网站是对cookie进行反爬虫的&#xff0c;可以看到cookie中有一个加密参数v 二、分析参数 可以使用hook方法&#xff0c;来hook住cookie中v生成的位置&#xff0c;可以直接在控制台中输入hook函数 (function () {use strict;v…

【详细解释深度学习图像分类检测评价指标】准确率Accuracy、精确率Precision、召回率Recall、mAP等(一文搞懂,建议收藏)

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要是记录工作中、学习中关于AI(Deep Learning)相关知识并分享。 &#x1f60a;&#x1f60a;&#x1f…

Parallels Desktop 19 mac 虚拟机软件 兼容M1 M2

Parallels Desktop 19 for Mac 是一款适用于 macOS 的虚拟机软件。无需重启即可在 Mac 上运行 Windows、Linux 等系统&#xff0c;具有速度快、操作简单且功能强大的优点。包括 30 余种实用工具&#xff0c;可简化 Mac 和 Windows 上的日常任务。 软件下载&#xff1a;Parallel…

大模型时代的计算机系统革新:更大规模、更分布式、更智能化

编者按&#xff1a;2023年是微软亚洲研究院建院25周年。借此机会&#xff0c;我们特别策划了“智启未来”系列文章&#xff0c;邀请到微软亚洲研究院不同研究领域的领军人物&#xff0c;以署名文章的形式分享他们对人工智能、计算机及其交叉学科领域的观点洞察及前沿展望。希望…

搭建网站使用花生壳的内网穿透实现公网访问

目录 一 搭建网站 二 使用花生壳进行内网穿透 1、创建内网映射 2、linux系统安装花生壳客户端 3、重新打开浏览器&#xff0c;输入http://b.oray.com&#xff0c;完成账户登录&#xff0c;激活&#xff08;SN登录&#xff09; 一 搭建网站 准备工作&#xff1a; [rootse…

主播产品对比话术

—、价格对比 主播产品A︰这款产品定价相对较高&#xff0c;但是其品质和功能都是一流的&#xff0c;对于追求高端体验的消费者来说&#xff0c;物有所值。 主播产品B∶这款产品的价格相对较低&#xff0c;性价比很高&#xff0c;对于预算有限的消费者来说&#xff0c;是个不…

基于Java SSM框架现图书馆借阅管理系统项目【项目源码+论文说明】

基于java的SSM框架实现图书馆借阅管理系统演示 摘要 以往的图书馆管理事务处理主要使用的是传统的人工管理方式&#xff0c;这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点&#xff0c;长期的人工管理模式会产生大量的文本借书与文本数据&#xff0c;这对事务的…

控制项目风险

一、风险预算 暴雪公司经理艾莉森&#xff0c;暴雪公司是一家小型工业企业&#xff0c;该公司的高管为了降低生产成本&#xff0c;决定搬迁工厂。项目经理明白实际情况与初始计划之间常常会有很大的出入。项目经理需要事先为一些事情做好准备&#xff0c;并在项目运作或预算方面…

Vue基础-Computed-Watch

一、computed计算属性使用 1.复杂data的处理方式 我们知道&#xff0c;在模板中可以直接通过插值语法显示一些data中的数据。 但是在某些情况&#xff0c;我们可能需要对数据进行一些转化后再显示&#xff0c;或者需要将多个数据结合起来进行显示&#xff1b; 比如我们需要…

ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连

用了网上的办法&#xff1a; 1、修改listener.ora的参数,把动态的参数设置为静态的参数,红色标注部分 位置D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN SID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAME PLSExtProc) (ORACLE_HOME D:\oracle\produ…

微信小程序(十)表单组件(入门)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.type 属性指定表单类型 2.placeholder 属性指定输入框为空时的占位文字 源码&#xff1a; form.wxml <!-- 提前准备好的布局结构代码 --> <view class"register"><view class"…

【LangChain学习之旅】—(10) 用RouterChain确定客户意图

【【LangChain学习之旅】—&#xff08;10&#xff09; 用RouterChain确定客户意图 任务设定整体框架具体步骤如下&#xff1a; 具体实现构建提示信息的模板构建目标链 Reference&#xff1a;LangChain 实战课 任务设定 首先&#xff0c;还是先看一下今天要完成一个什么样的任…

Pyro —— DOP Nodes

目录 Smoke Object —— 创建smoke对象及相关场 Smoke Solver —— Smoke解算器 Color Relationships Advanced Pyro Solver —— Pyro解算器 Smoke Object (Sparse) —— 创建smoke对象及相关场 Smoke Solver (Sparse) —— Sparse Smoke解算器 Simulation Advanced …

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-1最优控制问题与性能指标 1. 最优控制问题与性能指标2. 动态规划 Dynamic Programming2.1 基本概念2.2 代码详解2.3 简单一维案例 3. 线性二次型调节器&#xff…

SourceTree修改仓库密码

1、找到 SourceTree缓存文件目录&#xff1a; passwd 目录保存账号对应的密码&#xff08;已加密&#xff09; 2、删除密码 删除passwd文件即可。重启 SourceTree 软件&#xff0c;进行操作&#xff0c;就会有输入密码的弹窗&#xff0c;输入即可。

高标准农田气象站

在当今社会&#xff0c;科技的发展正在深刻地改变着我们的生活。特别是在农业领域&#xff0c;科技的运用已经成为了保障粮食安全、提高农业生产效率的重要手段。其中&#xff0c;高标准农田气象站作为现代农业的重要组成部分&#xff0c;正在发挥着越来越重要的作用。 TH-NQ14…

【原生小程序-分包】

1.创建分包-文件夹 subPackages app.json中写入subPackges对象&#xff0c;在里面写分包路径 {"pages": ["pages/index/index"],"subPackages": [{"root": "subPackages","name": "分包A","pag…

【强化学习】QAC、A2C、A3C学习笔记

强化学习算法&#xff1a;QAC vs A2C vs A3C 引言 经典的REINFORCE算法为我们提供了一种直接优化策略的方式&#xff0c;它通过梯度上升方法来寻找最优策略。然而&#xff0c;REINFORCE算法也有其局限性&#xff0c;采样效率低、高方差、收敛性差、难以处理高维离散空间。 为…