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

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

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

相关文章

Java基础进阶02-xml

一、XML&#xff08;可拓展标记语言&#xff09; 1.学习网站&#xff1a; https://www.w3schoo1.com.cn 标记语言:通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展:标签的名字是可以自定义的 2.作用 用于进行存储数据和传输数据 作为软件的配置文件 …

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能&#xff0c;更多是修复bug )&#xff0c;本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…

文件上传至Linux系统

文件上传 使用jsch库来建立一个SSH连接&#xff0c;然后通过该连接执行Linux命令来上传文件。 <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> <!--或者你项目中的最新版本…

使用IntelliJ IDEA快速搭建springboot 基础模板项目

使用IntelliJ IDEA快速搭建springboot 基础模板项目&#xff01;今天和大家分享一下&#xff0c;如何使用IntelliJ IDEA里面的maven插件&#xff0c;来快速搭建一个简单的Springboot基础项目。 第一步&#xff0c;菜单里面找到&#xff0c;文件-》新建-项目。如图。我们勾选了是…

ChatGPT用来润色论文\生成完整长篇论文\进行AI绘图,到底有多强大!!

​课程安排 学习内容 第一章 2024年AI领域最新技术 1.OpenAI新模型-GPT-5 2.谷歌新模型-Gemini Ultra 3.Meta新模型-LLama3 4.科大讯飞-星火认知 5.百度-文心一言 6.MoonshotAI-Kimi 7.智谱AI-GLM-4 第二章 OpenAI开发者大会后GPT最新技术 1.最新大模型GPT-4 Turbo详细介…

Spring Boot 整合 Camunda 实现工作流

工作流是我们开发企业应用几乎必备的一项功能&#xff0c;工作流引擎发展至今已经有非常多的产品。最近正好在接触Camunda&#xff0c;所以来做个简单的入门整合介绍。如果您也刚好在调研或者刚开始计划接入&#xff0c;希望本文对您有所帮助。如果您是一名Java开发或Spring框架…

【博客搭建记录贴】问题记录:hexo : 无法加载文件 C:\Program Files\nodejs\hexo.ps1,因为在此系统上禁止运行脚本。

1&#xff0c;背景 hexo&#xff08;博客框架&#xff09;安装完毕之后&#xff0c;正准备看看其版本&#xff0c;发现出现下面脚本禁止运行的错误。 PS C:\Users\PC> hexo -v hexo : 无法加载文件 C:\Program Files\nodejs\hexo.ps1&#xff0c;因为在此系统上禁止运行脚…

第8章-网络设备文件管理

1. 网络设备的文件系统 1.1. 概述 1.2. 文件类型 1.3. 存储方式 1.4. 文件管理 2. 文件的管理 3. 网络设备软件维护基础 4. 常见问题 1. 网络设备的文件系统 1.1. 概述 ① 设备以文件的方式对运行所需的数据进行存储&#xff1b; ② Linux&#xff1b; 文件&#xff1a…

【Flink-1.17-教程】-【四】Flink DataStream API(5)转换算子(Transformation)【分流】

【Flink-1.17-教程】-【四】Flink DataStream API&#xff08;5&#xff09;转换算子&#xff08;Transformation&#xff09;【分流】 1&#xff09;使用 filter 简单实现2&#xff09;使用侧输出流实现 所谓“分流”&#xff0c;就是将一条数据流拆分成完全独立的两条、甚至多…

Nginx 代理服务路径带/和不带/的问题

nginx初始配置如下 server {listen 6087;location / {#网站主页路径。此路径仅供参考&#xff0c;具体请您按照实际目录操作。#例如&#xff0c;您的网站运行目录在/etc/www下&#xff0c;则填写/etc/www。#允许跨域请求的域&#xff0c;* 代表所有add_header Access-Control-…

AMIS的组件学习使用

部分代码片段 {"id": "filterForm","className": " xysd-zbkb-pubquery","labelWidth": 130,"body": [{"type": "grid","className": "xysd-grid-query-input","c…

第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具类)

文章目录 第12章_集合框架本章专题与脉络1. 集合框架概述1.1 生活中的容器1.2 数组的特点与弊端1.3 Java集合框架体系1.4 集合的使用场景 2. Collection接口及方法2.1 添加2.2 判断2.3 删除2.4 其它 3. Iterator(迭代器)接口3.1 Iterator接口3.2 迭代器的执行原理3.3 foreach循…

Android TP方向调试

一、问题描述 拿到一款新TP&#xff0c;适配好驱动后&#xff0c;触摸屏幕发现触摸点位置和Android报点位置不一致&#xff0c;如上滑变成下滑或者左滑右滑等 二、问题分析 1.加载TP驱动&#xff0c;且驱动能正确上报数据 2.使用命令打开触摸报点 settings put system show…

dolphinscheduler节点二次开发需要改动的部分

dolphinscheduler节点二次开发需要改动的部分 前端 在dolphinscheduler-ui/public/images/task-icons/目录下新增两个节点的logo图片&#xff0c;一个为激活状态的一个为非激活状态的&#xff0c;如下。 修改文件dolphinscheduler-ui/src/views/projects/task/constants/task…

实战:加密传输数据解密

前言 下面将分享一些实际的渗透测试经验&#xff0c;帮助你应对在测试中遇到的数据包内容加密的情况。我们将以实战为主&#xff0c;技巧为辅&#xff0c;进入逆向的大门。 技巧 开局先讲一下技巧&#xff0c;掌握好了技巧&#xff0c;方便逆向的时候可以更加快速的找到关键…

HCIE之BGP基础概念(一)

BGP 一、BGP的基本概述二、BGP分类三、BGP的工作原理BGP报文类型&#xff1a;BGP状态机&#xff1a; 四、BGP对等体之间的交互原则解决BGP路由黑洞方法&#xff1a; 五、路由反射器路由反射规则路由反射器下防环联邦 六、BGP属性特点优选协议首选值&#xff08;PrefVal&#xf…

Oracle 数据库恢复删除的数据

需求描述&#xff1a; 同事让删除脏数据&#xff0c;结果删错了&#xff0c;需要恢复数据 思路&#xff1a; 利用闪回恢复数据只能恢复15分钟之内的&#xff0c;后面undo空间会被重写&#xff0c;就恢复不了&#xff0c;所以删除数据后&#xff0c;要谨慎再三确认&#xff0c…

正弦量的有效值

正弦量的有效值 引言正文 引言 相信有很多小伙伴们还记得&#xff0c;初中学习电压电流的时候&#xff0c;对于交变电流&#xff0c;电压&#xff0c;其有效值为正弦信号的最大值除以 1 2 \cfrac{1}{\sqrt{2}} 2 ​1​。 具体推到过程&#xff0c;作者以后有时间了会进行添加…

ESP8266 PlatformIO Arduino中为墨水屏制作u8g2自定义字库

Content 0. 前言1. 工具下载2. 字体下载3. 开始转换4. 添进字库0. 前言 使用的是 U8g2_for_Adafruit_GFX 字库,兴许你会在其他地方遇见更中意的字体,现在我们将它添加进去。 操作系统:Windows10 专业版 1. 工具下载 使用开源的 u8g2FontTool 软件,下载完成后解压。 资…

PHP编程实践:实际商品价格数据采集

引言 在电子商务领域&#xff0c;对商品价格进行数据采集和对比是一项常见的需求。本文将介绍如何使用PHP编程语言实现对1688和淘宝商品价格数据的采集和对比&#xff0c;帮助读者了解实际的编程实践过程。 一、数据采集原理 数据采集是指从互联网上获取数据的过程&#xff…