Docker入门篇(Docker基础概念与Linux安装教程)

目录

一、什么是Docker、有什么作用

二、Docker与虚拟机(对比)

三、Docker基础概念

四、CentOS安装Docker


一、从零认识Docker、有什么作用

1.项目部署可能的问题:

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:依赖关系复杂,容易出现兼容性问题,开发、测试、生产环境有差异

2.Docker如何解决依赖的兼容问题的?
  • 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包;

  • 将每个应用放到一个隔离容器去运行,避免互相干扰

3. Docker封装好的程序包如何跨系统运行?

用户程序、操作系统内核、硬件之间的关系:

  • 内核与硬件交互,提供操作硬件的指令

  • 系统应用封装内核指令为函数,便于程序员调用

  • 用户程序基于系统函数库实现功能

前提:

不同Linux操作系统(如CentOS和Ubuntu),他们的的内核相同,但是开放给程序员使调用的的"系统调用"(俗称函数库)是有差异的,因此,项目的node、数据库等环境不能跨系统运行。

Docker是如何解决上述问题的呢?

  • Docker将用户程序与所需要调用的系统函数库一起打包。

  • Docker的程序包在运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行。

可以说,Docker打包好的程序包可以在任何使用Linux内核的操作系统上运行。

总的来说:

(1)Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题? 答:Docker允许在开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像; Docker应用运行在容器中,使用沙箱机制,相互隔离

(2)Docker如何解决开发、测试、生产环境有差异的问题? 答:Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行。

总结:

Docker是一个快速交付应用、运行应用的技术:

  1. 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统;

  2. 运行时利用沙箱机制形成隔离容器,各个应用互不干扰;

  3. 启动、移除都可以通过一行命令完成,方便快捷;

二、Docker与虚拟机(对比)

虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在Windows系统里面运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了。

Hypervisor是一种模拟计算机硬件的技术。

特性 Docker 虚拟机
性能 接近原生 性能较差
硬盘占用 一般为MB 一般为GB
启动 秒级 分钟级

Docker和虚拟机的差异:

  • docker是一个系统进程;虚拟机是在操作系统中的操作系统;

  • docker体积小、启动速度快、性能好;而虚拟机体积大、启动速度慢、性能一般;

三、Docker基础概念

1. 镜像和容器

**镜像(Image):**Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

**容器(Container):**镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

注意:

  • 镜像是只读的,基于镜像创建的容器(进程),只能对镜像作读操作;

  • 对于一些需要写操作的文件,如日志和数据等,容器需要进行一个备份,如上图;

2. Docker和DockerHub

DockerHub: DockerHub是一个Docker镜像的托管平台。这样的平台统称为Docker Registry.。

国内也有类似于DockerHub的公开服务,比如网易云镜像服务、阿里云镜像库等。

3. Docker架构
  1. 如何利用Docker完成镜像构建?

  2. 如何从远端拉取一个镜像呢?

  3. 如何去运行一个容器呢?

Docker是一个CS架构的程序,由两部分组成: ◆服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等 ◆客户端(client):通过命令或RestAPIT向Docker)服务端发送指令。可以在本地或远程向服务端发送指令。

图中Registry相当于官方远程仓库,存储这各种官方镜像。

总结:

镜像: 将应用程序及其依赖、环境、配置打包在一起。 **容器:**镜像运行起来就是容器,一个镜像可以运行多个容器。

Docker结构: 服务端:接收命令或远程请求,操作镜像或容器; 客户端:发送命令或者请求到Docker服务端;

**DockerHub:**一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry;


四、CentOS安装Docker

请参考我的这篇博客:

Docker 安装详细教程(适用于CentOS 7 系统)-CSDN博客文章浏览阅读350次,点赞6次,收藏7次。Docker 分为 CE 和 EE 两大版本。CE即社区版(免费,支持周期7个月);EE即企业版,强调安全,付费使用,支持周期24个月。Docker CE 分为和nightly三个更新频道。官方网站上有各种环境下的安装指南,这里主要介绍Docker CE在CentOS上的安装。Docker CE 支持64位版本 CentOS7,并且要求内核版本不低于3.10,CentOS7满足最低内核的要求,所以我们在CentOS7安装Docker。https://blog.csdn.net/Future_yzx/article/details/145429037


总结

本文介绍了 Docker 的基础概念和常见应用,重点讲解了它如何解决跨系统部署问题,并与虚拟机进行了对比。我们还详细说明了 Docker 镜像、容器、Docker Hub 等核心概念,并提供了在 CentOS 上安装 Docker 的具体步骤。

通过这篇教程,你应该能够理解 Docker 的基本功能并顺利安装使用它。掌握 Docker 将帮助你提高开发效率和部署灵活性。如果有更多问题,欢迎继续关注后续内容。

相关推荐
Lovyk20 分钟前
Linux 正则表达式
linux·运维
Fireworkitte1 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9002 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char2 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘123 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
AI大模型5 小时前
基于 Docker 的 LLaMA-Factory 全流程部署指南
docker·llm·llama
春人.6 小时前
PortainerCE 跨云管理:cpolar 内网穿透服务实现多环境统一控制
云原生·eureka
华强笔记7 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发7 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建
tb_first7 小时前
k8sday11服务发现(2/2)
docker·云原生·容器·kubernetes·k8s