Docker基础 & 基本概念

简介: Docker使用一种称为名称空间的技术来提供容器的隔离工作区。 运行容器时,Docker会为该容器创建一组名称空间。 这些名称空间提供了一层隔离。 容器的每个方面都在单独的名称空间中运行,并且对其的访问仅限于该名称空间。

👳我亲爱的各位大佬们好😘😘😘
♨️本篇文章记录的为 Docker基础 & 基本概念 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉🙉。
♨️如果文章有什么需要改进的地方还请大佬不吝赐教❤️🧡💛
👨‍🔧 个人主页 : 阿千弟

一、基本概念

1、Docker架构

image.png

K8S:CRI(Container Runtime Interface)

Client: 客户端;操作docker服务器的客户端(命令行或者界面)

Docker_Host:Docker主机;安装Docker服务的主机

Docker_Daemon:后台进程;运行在Docker服务器的后台进程

Containers:容器;在Docker服务器中的容器(一个容器一般是一个应用实例,容器间互相隔离)

Images:镜像、映像、程序包;Image是只读模板,其中包含创建Docker容器的说明。容器是由Image运

行而来,Image固定不变。

Registries:仓库;存储Docker Image的地方。官方远程仓库地址: https://hub.docker.com/search

Docker用Go编程语言编写,并利用Linux内核的多种功能来交付其功能。 Docker使用一种称为名称空间的技术来提供容器的隔离工作区。 运行容器时,Docker会为该容器创建一组名称空间。 这些名称空间提供了一层隔离。 容器的每个方面都在单独的名称空间中运行,并且对其的访问仅限于该名称空间。

Docker 面向对象
镜像(Image)
容器(Container) 对象(实例)

image.png

容器与虚拟机

2、Docker隔离原理

namespace 6 项隔离 (资源隔离)

namespace 系统调用参数 隔离内容
UTS CLONE_NEWUTS 主机和域名
IPC CLONE_NEWIPC 信号量、消息队列和共享内存
PID CLONE_NEWPID 进程编号
Network CLONE_NEWNET 网络设备、网络栈、端口等
Mount CLONE_NEWNS 挂载点(文件系统)
User CLONE_NEWUSER 用户和用户组
  • cgroups 资源限制 (资源限制)
    cgroup提供的主要功能如下:-

  • 资源限制:限制任务使用的资源总额,并在超过这个 配额 时发出提示

  • 优先级分配:分配CPU时间片数量及磁盘IO带宽大小、控制任务运行的优先级
  • 资源统计:统计系统资源使用量,如CPU使用时长、内存用量等
  • 任务控制:对任务执行挂起、恢复等操作
    cgroup资源控制系统,每种子系统独立地控制一种资源。功能如下
子系统 功能
cpu 使用调度程序控制任务对CPU的使用
cpuacct(CPU Accounting) 自动生成cgroup中任务对CPU资源使用情况的报告
cpuset 为cgroup中的任务分配独立的CPU(多处理器系统时)和内存
devices 开启或关闭cgroup中任务对设备的访问
freezer 挂起或恢复cgroup中的任务
memory 设定cgroup中任务对内存使用量的限定,并生成这些任务对内存资源使用情况的报告
perf_event(Linux CPU性能探测器) 使cgroup中的任务可以进行统一的性能测试
net_cls(Docker未使用) 通过等级识别符标记网络数据包,从而允许Linux流量监控程序(Tra?icController)识别从具体cgroup中生成的数据包

3、Docker 如何工作?

​ Docker 技术使用 Linux 内核和内核功能(例如 Cgroups 和 namespaces)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用程序,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。

​ 容器工具(包括 Docker)可提供基于镜像的部署模式。这使得它能够轻松跨多种环境,与其依赖程序共享应用或服务组。Docker 还可在这一容器环境中自动部署应用程序(或者合并多种流程,以构建单个应用程序)。

4、Docker安装

以下以centos为例;

更多其他安装方式,详细参照文档: https://docs.docker.com/engine/install/centos/

1、移除旧版本

sudo yum remove docker*

2、设置docker yum源

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装最新docker engine (可不安装)

sudo yum install docker-ce docker-ce-cli containerd.io

4、安装指定版本docker engine

1、在线安装

找到所有可用docker版本列表
yum list docker-ce --showduplicates | sort -r
安装指定版本,用上面的版本号替换<VERSION_STRING>
sudo yum install docker-ce-<VERSION_STRING>.x86_64 docker-ce-cli-<VERSION_STRING>.x86_64 containerd.io
例如
yum install -y docker-ce-19.03.9  docker-ce-cli-19.03.9 containerd.io

2、离线安装

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
rpm -ivh xxx.rpm
可以下载 tar
解压启动即可
https://docs.docker.com/engine/install/binaries/#install-daemon-and-client-binaries-on-linux

5、启动服务

启动

systemctl start docker

开机自启

systemctl enable docker
#

6、镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
   
   
  "registry-mirrors": ["https://c9jwzg2k.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

阿里云的镜像是从docker hub来的,我们配置了加速,默认是从阿里云(缓存)下载
以后docker下载直接从阿里云拉取相关镜像
/etc/docker/daemon.json 是Docker的核心配置文件。

{
   
   
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com"
    ]
}

5、Docker镜像生命周期

image.png

如果这篇【文章】有帮助到你💖,希望可以给我点个赞👍,创作不易,如果有对Java后端或者对spring感兴趣的朋友,请多多关注💖💖💖
👨‍🔧 个人主页 : 阿千弟

目录
相关文章
|
15天前
|
存储 监控 安全
【专栏】探讨Docker Compose的核心概念、使用方法及最佳实践,助你轻松驾驭容器编排的世界
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
3月前
|
存储 持续交付 Docker
Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
43 0
|
7月前
|
存储 Kubernetes 持续交付
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
139 0
|
11天前
|
虚拟化 数据中心 Docker
8.Docker相关概念
8.Docker相关概念
|
17天前
|
存储 Kubernetes Docker
Kubernetes(K8S)集群管理Docker容器(概念篇)
Kubernetes(K8S)集群管理Docker容器(概念篇)
|
29天前
|
存储 运维 数据中心
Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
Docker是容器化技术,基于镜像(只读模板)创建可移植的容器,确保应用及其服务在隔离环境中运行。其优势包括快速部署(整个应用打包一次部署)、跨平台兼容、统一运行环境、资源隔离和简化依赖管理。Docker在开发和运维中都发挥作用,助力高效测试、部署和提升生产稳定性。
|
1月前
|
前端开发 Ubuntu 开发者
【Docker系列】Docker-核心概念/常用命令与项目部署实践
【4月更文挑战第1天】 Docker是容器化技术,打包应用及依赖,实现快速部署。核心概念包括镜像、容器和仓库。镜像是只读模板,容器是镜像运行实例,仓库用于存储和分发镜像。常用命令如`docker search`、`docker pull`、`docker images`、`docker ps`等。安装Docker在Ubuntu上涉及`apt-get update`、`install docker-ce`等步骤。了解这些基础,开发者能更高效地部署和管理应用。Docker简化了环境配置,增强了软件的可移植性和扩展性,是现代开发的必备技能。
451 3
|
2月前
|
存储 Kubernetes 虚拟化
Docker相关的概念
Docker相关的概念
14 0
|
2月前
|
存储 测试技术 开发者
Docker的基本概念和优势,以及实际应用场景
Docker的基本概念和优势,以及实际应用场景
|
3月前
|
测试技术 持续交付 数据库
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
63 0