【docker】了解什么是Docker

2024-09-07 14:36
文章标签 docker 了解

本文主要是介绍【docker】了解什么是Docker,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

   最近,在学习如何部署项目的时候,老是出错误,然后朋友推荐了去学一下docker,然后自己就去学了【尚硅谷】的关于docker的教程视频,学完之后,感觉docker真的强,可以把我们做好的app的进行跨平台、快速的运行、构建以及分享出去。学会了docker在掌握一项新的容器虚拟化技术的同时又方便了我们项目的一次分装,跨平台运行。所以我准备将自己学习的内容以博客的形式记录,方便后期的学习与回顾,当然大家也在小破站可以去看【尚硅谷】相应的视频讲解!

二、什么是Docker

这里借用docker官网(Docker: Accelerated Container Application Development)的一句话来解释:Docker就是用来加速我们应用的构建、分享以及运行的容器虚拟化技术!

PS:现在的docker官网已经不能直接访问了,作为一个IT人员,要懂得自己施加一些“魔法”哦

三、Docker的工作原理

这里就借用【尚硅谷】视频里的一个插图来记录一下Docker的工作原理。

在这幅图中,有Client、Docker Host、Registry(应用市场)这三个部分,其中Docker Host(Docker 主机)表示我们的一台机器下载了我们的Docker那么这台机器就是我们的Docker主机,Docker的后台进程Daemon就会一直运行为我们服务;而Client表示一个命令行程序,可以通过命令(docker pull 、docker run等)来操作我们的Daemon;而Registry(应用市场)是Docker自己的应用市场,里面有很多的应用软件,这些应用软件被称为镜像。

Docker_hub应用市场:

1、如何Run

如上图所示,以运行redis为例,我们现在Client端执行docker pull redis命令(步骤①),此时我们的Daemon就回去应用市场找到我们的redis镜像(步骤②),将redis镜像下载到本机(步骤③),Client再执行docker run redis命令(步骤④),此时我们的Daemon就会找本地的redis镜像,如果找不到它也会自动下载(步骤⑤),找到这个镜像后就会启动它(步骤⑥),此时这个redis镜像就被启动了,我们把它叫做容器,当然我们可以启动多个容器!这就是我们如何Run的一个过程!

2、如何Build

如上图所示,我们有个构建好的软件OpenJDK,我们首先在Client端执行docker build xxx(软件名称)(步骤①),Daemon就会帮我们制造一个镜像(步骤②),然后就会生成一个OpenJDK镜像(步骤③),再在Client端执行docker push xxx(软件名称)(步骤④),此时Daemon就会将我们的OpenJDK镜像推送到我们的应用市场(步骤⑤),当OpenJDK镜像在应用市场时,其他人也就可以下载和访问我们的镜像了。

3、如何Share

其实,当我们讲解了Run、Build后,Share我们的软件,只需要熟悉docker pull xxx、docker push xxx,懂得如何在应用市场推送和下拉我们的镜像即可!

四、Docker容器化的特点

在上面的Docker的原理图中,我们会有两个比较新的词,分别是镜像容器,至于镜像其实就是软件包,将我们的软件打成了包,至于容器的话,大家可能比较陌生,为什么会有容器化这种思想呢?

1、背景

要回答这个问题,首先我们要从虚拟机(Virtual Machine,简称VM)的发展说起,VM将一台物理设备虚拟为多个逻辑设备,每个逻辑设备可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高设备的工作效率。这表明我们在虚拟化部署的时候,每部署一个虚拟机就需要配一个操作系统,才能运行应用,如果此时我们用户只是做一些简单的操作话,采用VM技术本身比较负载而且会造成资源的浪费,迁移应用程序的话,也需要迁移整个VM。所以此时急需一种轻量级的能实现应用程序之间相互独立运行的虚拟化技术!

2、Docker容器

基于以上的背景,我们的容器虚拟化技术就孕育而生,它同时兼顾了我们的轻量级隔离环境的存在,它之所以能这样是因为,它不像VM采用操作系统级的资源隔离,容器采用的是进程级的系统隔离。

它具体有以下特点:

①容器属于轻量级的VM、

②容器共享操作系统内核、

③容器拥有自己的文件系统、CPU、内存、进程空间等

④容器互相隔离

⑤容器安全可靠、高密度、跨平台等

五、总结

   总的来说,这篇博客的内容只是让大家对Docker概念和原理有个基本的认识,关于Docker指令的实际操作会在后面的博客中继续记录的,大家感兴趣的可以持续关注哦~

这篇关于【docker】了解什么是Docker的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145332

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp