【Docker集群应用】Docker基础与部署安装

server/2024/11/25 13:52:14/

文章目录

  • Docker
    • 概述
      • Docker 与 虚拟机的区别
      • Linux 六大命名空间
      • Docker 的核心技术
      • Docker 核心概念
  • Docker部署安装
    • 关闭防火墙和 SELinux
    • 安装依赖包
    • 设置阿里云镜像源
    • 安装 Docker-CE 并设置为开机自动启动
    • 查看 Docker 版本信息
    • 查看 Docker 信息
      • Docker 系统信息

Docker

概述

Docker 是一个开源的应用容器引擎,基于 Go 语言开发并遵循 Apache 2.0 协议开源。它允许在 Linux 容器中运行应用程序,是一种轻量级的“虚拟机”。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器
Docker 的 Logo 设计
Docker 的 Logo 设计为一条蓝色鲸鱼,拖着许多集装箱。鲸鱼代表宿主机,集装箱代表相互隔离的容器,每个集装箱中都包含自己的应用程序。
Docker 的设计宗旨
Docker 的设计宗旨是 Build, Ship and Run Any App, Anywhere。通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件可以是一个应用、一套服务,甚至是一个完整的操作系统。

容器化的优势

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

Docker 与 虚拟机的区别

特性Docker 容器虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗 50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离

Linux 六大命名空间

命名空间缩写作用效果
MNT挂载文件系统隔离每个命名空间可以有自己的文件系统挂载点
NET网络网络资源隔离每个命名空间可以有自己的网络栈,包括网络接口、路由表等
PID进程进程号隔离每个命名空间有自己独立的 PID 编号空间
IPC间通进程间通信隔离每个命名空间有自己独立的 System V IPC 和 POSIX 消息队列
UTS主机主机名、域名隔离每个命名空间可以有自己的主机名和域名
USER用户用户名、组名隔离每个命名空间可以有自己的用户和组 ID 映射

Docker 的核心技术

Docker 容器本质上是宿主机的一个进程,通过以下技术实现资源隔离和限制:

  • Namespace:实现资源隔离。
  • Cgroup:实现资源限制。
  • 写时复制技术(Copy-on-Write):实现高效的文件操作。

Docker 核心概念

  1. 镜像(Image)
    • Docker 镜像是创建容器的基础,类似虚拟机的快照。
    • 镜像是一个面向 Docker 容器引擎的只读模板,包含运行应用程序所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
    • 镜像也是一个压缩包,包含了完整的操作系统。
  2. 容器(Container)
    • Docker 容器是从镜像创建的运行实例,可以被启动、停止和删除。
    • 每个容器都是相互隔离、互不可见的,以保证平台的安全性。
    • 容器可以看做是一个简易版的 Linux 环境和运行在其中的应用程序。
  3. 仓库(Repository)
    • Docker 仓库用来集中保存镜像。
    • 可以将创建的镜像上传到公有仓库或私有仓库。
    • 在另一台机器上使用镜像时,只需从仓库获取。

Docker 数据存储
Docker 的镜像、容器、日志等内容默认存储在 /var/lib/docker 目录下。

Docker部署安装

  • Docker 目前仅支持 64 位系统。

关闭防火墙和 SELinux

systemctl stop firewalld.service
setenforce 0

安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2
  • yum-utils:提供了 yum-config-manager 工具。
  • device-mapper:Linux 内核中支持逻辑卷管理的通用设备映射机制。
  • device-mapper-persistent-datalvm2:device-mapper 存储驱动程序所需的依赖包。

设置阿里云镜像源

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 version

查看 Docker 信息

docker infoClient:Context:    defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)Server:Containers: 0						# 容器数量Running: 0Paused: 0Stopped: 0Images: 1							# 镜像数量Server Version: 20.10.3			# server 版本Storage Driver: overlay2			# docker 使用的是 overlay2 文件驱动Backing Filesystem: xfs			# 宿主机上的底层文件系统Supports d_type: trueNative Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfs			# Cgroups 驱动Cgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2Default Runtime: runcInit Binary: docker-initcontainerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939brunc version: ff819c7e9184c13b7c2607fe6c30ae19403a7affinit version: de40ad0Security Options:seccompProfile: defaultKernel Version: 3.10.0-693.el7.x86_64		# 宿主机的相关信息Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 976.3MiBName: localhost.localdomainID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDTDocker Root Dir: /var/lib/docker			# docker 数据存储目录Debug Mode: falseRegistry: https://index.docker.io/v1/		# registry 地址Labels:Experimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:							# 加速站点https://6ijb8ubo.mirror.aliyuncs.com/Live Restore Enabled: false

Docker 系统信息

  • Client 部分

    • Context:当前使用的 Docker 上下文(默认为 “default”)。
    • Debug Mode:客户端调试模式是否开启(此处为 false)。
    • Plugins:列出已安装的 Docker 插件,如 Docker App 和 Buildx。
  • Server 部分(关键信息):

    • Containers
      • Containers: 0(总容器数,包括运行、暂停和停止的容器)。
      • Running: 0(正在运行的容器数)。
      • Paused: 0(暂停的容器数)。
      • Stopped: 0(停止的容器数)。
    • Images: 1(本地镜像数)。
    • Server Version: 20.10.3(Docker 服务器版本)。
    • Storage Driver: overlay2(Docker 使用的存储驱动)。
      • Backing Filesystem: xfs(宿主机上的底层文件系统)。
      • Supports d_type: true(表示文件系统支持 d_type,有助于性能优化)。
      • Native Overlay Diff: true(表示使用原生的 overlay diff 技术,提高性能)。
    • Logging Driver: json-file(日志驱动)。
    • Cgroup Driver: cgroupfs(Cgroups 驱动,用于资源限制和管理)。
    • Plugins:列出 Docker 支持的卷、网络和日志插件。
    • Swarm: inactive(Swarm 集群模式未启用)。
    • Runtimes:列出 Docker 支持的运行时,如 runc。
    • Default Runtime: runc(默认运行时)。
    • Security Options:列出安全选项,如 seccomp(安全计算模式)。
    • Kernel VersionOperating System:提供宿主机的内核版本和操作系统信息。
    • Architecture:宿主机的架构(如 x86_64)。
    • CPUsTotal Memory:宿主机的 CPU 数和总内存。
    • NameID:Docker 主机的名称和唯一 ID。
    • Docker Root Dir:Docker 数据存储的根目录(如 /var/lib/docker)。
    • Debug Mode:服务器调试模式是否开启(此处为 false)。
    • Registry:默认的 Docker 镜像仓库地址。
    • Labels:Docker 主机的标签。
    • Experimental:是否启用实验性功能(此处为 false)。
    • Insecure Registries:列出不安全的镜像仓库地址(如 127.0.0.0/8)。
    • Registry Mirrors:列出镜像加速站点,用于加速 Docker 镜像的拉取和推送。
    • Live Restore Enabled:是否启用实时恢复功能(此处为 false)。
  • 存储驱动(Storage Driver):Docker 使用 overlay2 作为其默认的存储驱动,它提供了高效的镜像和容器管理。

  • Cgroup 驱动(Cgroup Driver):cgroupfs 是 Linux 上用于限制、记录和隔离进程组所使用的物理资源(如 CPU、内存、磁盘 I/O 等)的机制。

  • 运行时(Runtimes):Docker 支持多种容器运行时,其中 runc 是默认的运行时,用于启动和管理容器

  • 安全选项(Security Options):seccomp 是一种内核功能,用于在 Linux 上提供沙箱环境,限制容器内进程能够执行的系统调用。

  • 镜像加速站点(Registry Mirrors):通过配置镜像加速站点,可以加速 Docker 镜像的下载速度,提高开发效率。


http://www.ppmy.cn/server/144811.html

相关文章

ctfshow-Misc入门(1-16)

misc1 查看图片得到flag misc2 1、打开文本,发现以“塒NG”开头 3、修改文件格式为png格式 4、查看图片,得到flag *遇到的问题:无法直接修改后缀名 *解决方法:需要点击文件夹,然后点击查看,将文件拓…

核心差异:知识VS文档管理(+工具软件安利)

在讨论知识管理和文档管理时,我们经常会听到这两种说法被混淆使用。然而,它们各自服务于不同的目的,这一点至关重要。 想象一下,你是一名项目经理,面临以下两项任务: 存储最新的项目计划捕捉团队讨论中获…

spring循环依赖以及MyBatis-Plus的继承特性导致循环依赖自动解决失效

在 Spring 中,循环依赖是指两个或多个 bean 之间相互依赖,形成一个循环引用的情况。Spring 对于循环依赖有一定的处理机制,但也存在一些限制。 一、Spring 处理循环依赖的方式 三级缓存解决构造函数注入的循环依赖: Spring 首先创…

C++结构型设计模式之使用抽象工厂来创建和配置桥接模式的例子

下面是一个使用抽象工厂模式来创建和配置桥接模式的示例&#xff0c;场景是创建不同操作系统的窗口&#xff08;Window&#xff09;及其对应的实现&#xff08;WindowImpl&#xff09;。我们将通过抽象工厂来创建不同操作系统下的窗口和实现。 代码示例 #include <iostrea…

机器学习周志华学习笔记-第5章<神经网络>

机器学习周志华学习笔记-第5章<神经网络> 卷王&#xff0c;请看目录 5模型的评估与选择5.1 神经元模型5.2 感知机与多层网络5.3 BP(误逆差)神经网络算法 5.4常见的神经网络5.4.1 RBF网络&#xff08;Radial Basis Function Network&#xff0c;径向基函数网络&#xff0…

移动光猫[HS8545M5-10]获取超密

移动光猫[HS8545M5-10]获取超级密码 1、缘由2、前期准备2.1、确保本地开通telnet客户端功能2.2、准备好相关软件 3、开始查找超密 1、缘由 最近想折腾一下ipv6ddns打通内外网&#xff0c;查询资料说是需要将光猫桥接到外网&#xff1b;但是使用光猫后边的用户名密码根本就找不到…

kafka是如何做到高效读写

消息持久化&#xff1a; Kafka 将消息存储在磁盘上&#xff0c;并且通过顺序写入的方式提高写入性能。 消息被追加到日志文件的尾部&#xff0c;避免了随机写操作&#xff0c;从而提高了写入速度。零拷贝技术&#xff1a;利用操作系统的零拷贝特性&#xff0c;数据可以从磁盘直…

Spring Boot OA:构建企业级办公自动化平台

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了企业OA管理系统的开发全过程。通过分析企业OA管理系统管理的不足&#xff0c;创建了一个计算机管理企业OA管理系统的方案。文章介绍了企业OA管理系统的系统分析部…