1.Docker 简介

news2025/6/9 9:26:58

Docker 简介

什么是 Docker?

Docker的英文翻译是“搬运工”的意思,他搬运的东西就是我们常说的集装箱Container,Container 里面装的是任意类型的 App,我们的开发人员可以通过 Docker 将App 变成一种标准化的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。

从概念上来看 Docker 和我们传统的虚拟机比较类似,只是更加轻量级,更加方便使,Docker 和虚拟机最主要的区别有以下几点:

  • 虚拟化技术依赖的是物理CPU和内存,是硬件级别的;而我们的 Docker 是构建在操作系统层面的,利用操作系统的容器化技术,所以 Docker 同样的可以运行在虚拟机上面。
  • 我们知道虚拟机中的系统就是我们常说的操作系统镜像,比较复杂;而 Docker 比较轻量级,我们可以用 Docker 部署一个独立的 Redis,就类似于在虚拟机当中安装一个 Redis 应用,但是我们用 Docker 部署的应用是完全隔离的。
  • 我们都知道传统的虚拟化技术是通过快照来保存状态的;而 Docker 引入了类似于源码管理的机制,将容器的快照历史版本一一记录下来,切换成本非常之低。
  • 传统虚拟化技术在构建系统的时候非常复杂;而 Docker 可以通过一个简单的 Dockerfile 文件来构建整个容器,更重要的是 Dockerfile 可以手动编写,这样应用程序开发人员可以通过发布 Dockerfile 来定义应用的环境和依赖,这样对于持续交付非常有利。
    在这里插入图片描述

为啥要用容器?

应用容器是个啥样子呢,一个做好的应用容器长得就像一个装好了一组特定应用的虚拟机一样,比如我现在想用 Redis,那我就找个装好了 Redis 的容器就可以了,然后运行起来,我就能直接使用了。

那为什么不能直接安装一个 Redis 呢?肯定是可行的,但是有的时候根据每个人电脑的不同,在安装的时候可能会报出各种各样的错误,万一你的机器中毒了,你的电脑挂了,你所有的服务都需要重新安装。但是有了 Docker 或者说有了容器就不一样了,你就相当于有了一个可以运行起来的虚拟机,只要你能运行容器,Redis 的配置就省了。而且如果你想换个电脑,没问题,很简单,直接把容器”端过来”就可以使用容器里面的服务了。

Docker Engine

Docker Engine是一个C/S架构的应用程序,主要包含下面几个组件:

  • 常驻后台进程Dockerd
  • 一个用来和 Dockerd 交互的 REST API Server
  • 命令行CLI接口,通过和 REST API 进行交互(我们经常使用的 docker 命令)
    在这里插入图片描述

Docker 架构

Docker 使用 C/S (客户端/服务器)体系的架构,Docker 客户端与 Docker 守护进程通信,Docker 守护进程负责构建,运行和分发 Docker 容器。Docker 客户端和守护进程可以在同一个系统上运行,也可以将 Docker 客户端连接到远程 Docker 守护进程。Docker 客户端和守护进程使用 REST API 通过UNIX套接字或网络接口进行通信。
在这里插入图片描述

  • Docker Damon:dockerd,用来监听 Docker API 的请求和管理 Docker 对象,比如镜像、容器、网络和 Volume。
  • Docker Client:docker,docker client 是我们和 Docker 进行交互的最主要的方式方法,比如我们可以通过 docker run 命令来运行一个容器,然后我们的这个 client 会把命令发送给上面的 Dockerd,让他来做真正事情。
  • Docker Registry:用来存储 Docker 镜像的仓库,Docker Hub 是 Docker 官方提供的一个公共仓库,而且 Docker 默认也是从 Docker Hub 上查找镜像的,当然你也可以很方便的运行一个私有仓库,当我们使用 docker pull 或者 docker run 命令时,就会从我们配置的 Docker 镜像仓库中去拉取镜像,使用 docker push 命令时,会将我们构建的镜像推送到对应的镜像仓库中。
  • Images:镜像,镜像是一个只读模板,带有创建 Docker 容器的说明,一般来说的,镜像会基于另外的一些基础镜像并加上一些额外的自定义功能。比如,你可以构建一个基于 Centos 的镜像,然后在这个基础镜像上面安装一个 Nginx 服务器,这样就可以构成一个属于我们自己的镜像了。
  • Containers:容器,容器是一个镜像的可运行的实例,可以使用 Docker REST API 或者 CLI 来操作容器,容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
  • 底层技术支持:Namespaces(做隔离)、CGroups(做资源限制)、UnionFS(镜像和容器的分层) the-underlying-technology Docker 底层架构分析

安装

直接前往官方文档选择合适的平台安装即可,比如我们这里想要在centos系统上安装 Docker,这前往地址https://docs.docker.com/install/linux/docker-ce/centos/根据提示安装即可。

安装依赖软件包:

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件仓库,我们这里使用稳定版 Docker,执行下面命令添加 yum 仓库地址:

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

然后直接安装即可:

$ sudo yum install docker-ce

如果要安装指定的版本,可以使用 yum list 列出可用的版本:

$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable

比如这里可以安装18.03.0.ce版本:

$ sudo yum install docker-ce-18.03.0.ce

要启动 Docker 也非常简单:

$ sudo systemctl enable docker
$ sudo systemctl start docker

另外一种安装方式是可以直接下载指定的软件包直接安装即可,前往地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 找到合适的.rpm包下载,然后安装即可:

$ sudo yum install /path/to/package.rpm

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言位运算

所谓位运算,就是对一个比特(Bit)位进行操作。比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte),它已经是粒度最小的可操作单元了。C语言提供了六种位运算符&#xf…

linux系统下centos7 或 openwrt安装 使用 SpeedTest 测速

博主博客 https://blog.uso6.com https://blog.csdn.net/dxk539687357 一、测试本地是否安装 python(已安装可以跳过) 1.在命令行中输入rpm -qa | grep python36 判断是否已经安装 python3。 2.如果没有安装输入 yum install python36 进行安装。 二、测试 CentOS 到 Speed Te…

响应式布局以及提交网站

1.慕客协作平台1. /摹客官网地址: https://www.mockplus.cn/ 注册一个账号2. 下载moke ps插件 3. PS 安装/摹客/蓝湖插件3. 打开PS/摹客/蓝湖插件4. 上传(需要切图,需要先标注切图)5. 查看项目6. 邀请成员进入(分享按钮…

【Java 面试合集】简述下自定义异常的应用场景

简述下自定义异常的应用场景 1. 概述 如上图所示,我们想回答这个问题就要了解异常的基本结构。哪些是我们可以控制的,哪些是我们不能控制的。 也许有人会问了,其实在逻辑中可以多加判断,为什么要需要自定义呢。 其实判断的内容无…

rigol 普源MSO5104数字示波器技术参数

MSO5000系列数字示波器是基于RIGOL UltraVision II代技术的高性能中低端数字示波器,采用9英寸多点电容触摸屏,集7种仪器于一身。具有超高的采样带宽比和存储深度等优异的性能指标,以及精巧便携的外观设计。高集成度的ASIC芯片组和创新性的前端…

大数据技术架构(组件)27——Spark:CacheCheckpoint BroadcastAccumulate

2.1.7、Cache&Checkpoint&Broadcast&Accumulate2.1.7.1、Cache2.1.7.1.1、Cache原理RDD是通过iterator进行计算的。当然该方法是内部调用的,不会暴露给用户使用;1、CacheManager通过BlockManager从Local或者Remote获取数据,然后通…

网站虚拟主机的流量为什么会受限制?

虚拟主机流量限制是指网站所在的虚拟主机提供商对网站流量的限制,网站的流量超出限制的话将会受到一定影响,从而影响网站的正常运行。那么网站虚拟主机流量为什么会受限制?本文将详细介绍。 一、虚拟主机流量限制的主要原因 1、虚拟主机提供商设置的流量…

SpringBoot/SpringCloudAlibaba(ruoyi)中cron表达式(配置每天指定整点执行)读取配置文件

场景 若依微服务版手把手教你本地搭建环境并运行前后端项目: 若依微服务版手把手教你本地搭建环境并运行前后端项目_霸道流氓气质的博客-CSDN博客 在上面的基础上某业务需要配置cron表达式,该表达式需要指定每天的指定的整点执行, 比如每…

如何借力Alluxio推动大数据产品性能提升与成本优化?

内容简介 随着数字化不断发展,各行各业数据呈现海量增长的趋势。存算分离将存储系统和计算框架拆分为独立的模块,Alluxio作为如今主流云数据编排软件之一,为计算型应用(如 Apache Spark、Presto)和存储系统&#xff0…

buu [网鼎杯 2020 青龙组]boom 1

题目描述: 一个应用程序,打开了是一串要运行的代码: 题目分析: 首先,跟着代码走下1去得到: 对密文进行md5解密,得到:输入后继续跟着代码走下去,得到:好家伙&#xff0…

RabbitMQ 部署指南

RabbitMQ 部署指南RabbitMQ部署指南1.单机部署1.1.下载镜像1.2.安装MQ2.安装DelayExchange插件2.1.下载插件2.2.上传插件2.3.安装插件3.集群部署2.1.集群分类2.2.获取cookie2.3.准备集群配置2.4.启动集群2.5.测试2.5.1.数据共享测试2.5.2.可用性测试4.镜像模式4.1.镜像模式的特…

太酷了,用Python实现一个动态条形图!

大家好,我是小F~说起动态条形图,小F之前推荐过两个Python库,比如「Bar Chart Race」、「Pandas_Alive」,都可以实现。今天就给大家再介绍一个新的Python库「pynimate」,一样可以制作动态条形图,…

JVM调优最全面的成长 :参数详解+垃圾算法+示例展示+类文件到源码+面试问题

目录1.优秀的Java开发者1.1 什么是Java?1.2 编程语言1.3 计算机[硬件]能够懂的语言1.3.1 计算机发展史1.3.2 计算机体系结构1.3.3 计算机处理数据过程1.3.4 机器语言1.3.5 不同厂商的CPU1.3.6 操作系统1.3.7 汇编语言1.3.8 高级语言1.3.9 编译型和解释型1.3.9.1 编译…

内网渗透(十三)之内网信息收集-收集域环境中的基本信息

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

android kotlin 协程(一) 简单入门

android kotlin 协程(一) config: system: macOS android studio: 2022.1.1 Electric Eel gradle: gradle-7.5-bin.zip android build gradle: 7.1.0 Kotlin coroutine core: 1.6.4 前言:最近系统的学习了一遍协程, 计划通过10篇左右blog来记录一下我对协程的理解, 从最简…

视频融合平台EasyCVR集成宇视SDK关闭“按需直播”,一直未拉流是什么原因?

EasyCVR平台不仅能提供丰富的视频能力,还可提供云、边、端分布式海量视频资源的统一管理与运维,从而实现数据采集、处理、汇聚、分析、存储、管理等全环节的视频能力。借助智能分析网关的AI智能检测能力,可实现人脸、人体、车辆、烟火、物体、…

(十五)双边滤波Bilateral Filter

文章目录mathjax: true1.高斯滤波1.1 理论1.2 示例2.双边滤波(Bilateral Filter)2.1 理论基础2.2 OpenCV bilateralFilter函数参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 title: 3.双边滤波BilateralFi…

微信小程序 java基于Android老年人智慧服务平台-

目录 1绪论 4 1.1项目研究的背景 4 1.2开发意义 4 1.3项目研究内容 4 1.4论文结构 4 2开发技术介绍 6 2.1B/S架构 6 2.2 Android平台 6 2.3 Java语言简介 6 2.4 MySQL 介绍 7 2.5 MySQL环境配置 8 2.6 SSM框架 8 3系统分析 9 3.1可行性分析 9 3.1.1技术可行性 9 3.1.2经济可行性…

【图像异常检测】 Anomalib

原文: A practical guide to image-based anomaly detection using Anomalib 1. 简介 在工业生产中,质量保证是一个很重要的话题, 因此在生产中细小的缺陷需要被可靠的检出。工业异常检出旨在从正常的样本中检测异常的、有缺陷的情况。工业…

构建工具tsup入门第四部分

🎄Hi~ 大家好,我是小鑫同学,一位长期从事前端开发的编程爱好者,我将使用更为实用的案例输出更多的编程知识,同时我信奉分享是成长的唯一捷径,在这里也希望我的每一篇文章都能成为你技术落地的参考~ 目录&am…