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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot责任链与自定义注解:优雅解耦复杂业务

引言 责任链模式是一种行为设计模式&#xff0c;它允许你将请求沿着处理者链进行传递&#xff0c;直到有一个处理者处理请求。在实际应用中&#xff0c;责任链模式常用于解耦发送者和接收者&#xff0c;使得请求可以按照一定的规则被多个处理者依次处理。 首先&#xff0c;本…

【LeetCode】104. 二叉树的最大深度(简单)——代码随想录算法训练营Day16

题目链接&#xff1a;104. 二叉树的最大深度 题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例…

Docker网络配置与自定义IP容器通信

目录 前言 一、docker网络配置 1. bridge 虚拟网桥 2. host 网络模式 3. none 网络模式 4. 自定义container网络模式 二、自定义IP容器通信 1. 自定义IP 2. 创建所需容器&#xff08;mysql&#xff0c;tomcat&#xff09; 3. 准备项目资源 4. 构建Nginx实现负载均衡…

垃圾回收小程序:环保与便捷的完美结合

一、引言 随着科技的发展&#xff0c;移动应用程序已经成为人们日常生活中不可或缺的一部分。其中&#xff0c;废品回收小程序以其独特的价值和功能&#xff0c;日益受到人们的关注和青睐。本文将探讨废品回收小程序开发的重要性、功能特点、技术实现和未来发展趋势。 二、废…

AOP切面

什么是Spring的AOP AOP在spring中又叫“面向切面编程”&#xff0c;它可以说是对传统我们面向对象编程的一个补充&#xff0c;从字面上顾名思义就可以知道&#xff0c;它的主要操作对象就是“切面”&#xff0c;所以我们就可以简单的理解它是贯穿于方法之中&#xff0c;在方法…

springboot家乡特色推荐系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括家乡特色推荐的网络应用&#xff0c;在外国家乡特色推荐系统已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术&#xff0…

E3 基于Mysql的SQL应用和存储过程

一、实验目的: Mysql平台要求你熟练使用MySQL基本指令&#xff0c;完成对程序的控制与管理&#xff0c;并根据要求写存储过程。 二、实验要求: 1、基本硬件配置:英特尔Pentium III 以上,大于4G内存&#xff1b; 2、软件要求:Mysql&#xff1b; 3、时间:1小时&#xff1b; …

ggplot2 -- x轴相关操作

文章目录 刻度标签倾斜替换x轴刻度标签改变X刻度标签大小及颜色 演示数据集 library(ggplot2)# 示例数据 data <- data.frame(x 1:5,y c(3, 5, 2, 7, 4) ) data # x y #1 1 3 #2 2 5 #3 3 2 #4 4 7 #5 5 4刻度标签倾斜 p1 <- ggplot(data, aes(x x, y y)) geom_bar…

产品解读 | 新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台&#xff0c;满足对海量数据的存储和复杂业务的处理需求。 同时在易用性方面持续深耕&#xff0c;降低用户开发和运维成本&#xff0c;让数据处理平民化&#xff0c;助力用户以更便捷、高效的方式去挖掘数…

【Kafka】Kafka安装:Linux本地和Docker

目录 Linux本地安装kafkajava环境配置Zookeeper的安装配置Kafka的安装与配置生产与消费 Docker安装kafkaZookeeper安装Kafka安装 Linux本地安装kafka java环境配置 1、上传jdk-8u261-linux-x64.rpm到服务器并安装&#xff1a; rpm -ivh jdk-8u261-linux-x64.rpm2、配置环境变…

WorkPlus移动应用管理平台,助力企业实现高效移动办公

在移动办公成为当今工作方式的主流趋势下&#xff0c;管理和运营企业移动应用成为了提高工作效率和数据安全的重要环节。而移动应用管理平台作为实现移动办公高效管理的关键工具&#xff0c;WorkPlus以其领先的性能和全面的功能&#xff0c;助力企业实现高效移动办公。 为何选…

DP读书:在常工院的2023年度总结

DarrenPig的年度总结 这是最好的时代&#xff0c;这是最坏的时代。——狄更斯 这是最好的时代&#xff0c;这是最坏的时代。——狄更斯 这是最好的时代&#xff0c;这是最坏的时代。——狄更斯 一、2023我的感受 不就是2023吗&#xff0c;不就是一年的经历吗&#xff0c;大家…

如何使用Docker部署导航页工具Dashy并实现任意浏览器远程访问——“cpolar内网穿透”

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…

小红书商品笔记发布流程,如何避免盘营销

随着平台营销内容不断被管制&#xff0c;商品笔记慢慢出现在了人们的视野&#xff0c;这同时也意味着达人和品牌方们&#xff0c;可以名正言顺的在笔记内容中植入产品。商品链接的开通意味着&#xff0c;不管是达人还是品牌转化率都会进一步提升&#xff0c;今天来马文化传媒和…

AIGC:让生成式AI成为自己的外脑(文末送书)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 什么是AIGC?二. AIGC如何运作&#xff1f;2.1 步骤一&#xff1a;收集数据2.…

仅使用 Python 创建的 Web 应用程序(前端版本)第06章_登录页面

从本章开始,我们将创建每个页面。 本栏的例子 可以访问这里, WTS 首先是登录页面。 完成后的图像如下 创建过程如下 No类型内容1Model创建继承BaseDataModel的数据类User、Session2MockDB创建用户表并添加管理员/成员用户3Service创建AuthAPIClient、UserAPIClient4Page定义…

利用Burp Suite观察https通联

对使用 HTTPS 协议的应用程序进行测试时&#xff0c;常使用 bp 观察流量&#xff0c;为能成功建立HTTPS联接&#xff0c;在将bp设置居代理的同时&#xff0c;还必须导入bp伪证书&#xff0c;这样才能修改请求和响应&#xff0c;加密和解密流量&#xff0c;成功模拟浏览的各种动…

Maven构建工具:Java项目的不可或缺之选

引言 在Java开发领域&#xff0c;构建工具是项目中至关重要的一环。Maven&#xff08;Maven Apache&#xff09;是一个强大的构建工具&#xff0c;用于管理项目的构建、依赖和文档等方面。本篇博文将介绍如何配置和使用Maven来构建和管理Java项目。 第一部分&#xff1a;Mave…

数据脱敏(三)脱敏算法-遮盖算法

脱敏算法篇使用阿里云数据脱敏算法为模板,使用算子平台快速搭建流程来展示数据 遮盖脱敏是一种数据脱敏技术&#xff0c;它的主要目的是通过隐藏或替换敏感信息来保护数据安全&#xff0c;同时保持数据的其他特性不变&#xff0c;以便于数据的进一步使用和分析。这种脱敏技术适…

九州金榜|过年期间如何合理规划孩子学习?

随着春节的临近&#xff0c;家家户户都沉浸在喜庆的氛围中。对于孩子们来说&#xff0c;过年意味着热闹、欢笑和丰盛的美食。然而&#xff0c;即使是过年&#xff0c;学习也不应被忽视。九州金榜家庭教育将和大家一起探讨如何合理安排过年期间孩子的学习。 一、保持学习持续性 …