Docker: 改变容器化世界的革命性技术

news2024/11/29 8:53:18

目录

1.1什么是虚拟化

1.2什么是Docker

1.3容器与虚拟机的比较

1.4Docker组建

2、Docker安装

2.2设置ustc的镜像

2.3Docker的启动与停止

3、docker常用命令

3.1镜像

3.2容器相关命令


1.1什么是虚拟化

在计算机中,虚拟化(Vitualization)是一种资源管理技术,是将计算机的各种实体资源,比如服务器、网络、内存及存储等,予以抽象,转换后呈现出来,打破实体结构间的不可分割的障碍,使用户可以比原来的组态更好的方式来用用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或者物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(VIP)、桌面虚拟化、服务虚拟化、虚拟机等。

1.2什么是Docker

Docker是一个开源项目,诞生于2013年初,最初是doCloud公司内部的一个业余项目。它基于Google公司退出的Go语言实现的。项目后来加入了Linux基金会,遵循了Apache2.0协议。

 

为什么选择Docker

  • 更高效的利用系统资源

由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件的存储速度,都是比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。

  • 更快速的启动事件

传统的虚拟机技术启动应用服务往往虚拟需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级。甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间

  • 一致的运行环境

开发环境中一个常见的问题是环境的一致性问题,由于开发环境、测试环境、生产环境不一致,导致有些Bug并未在开发过程中被发现,而Docker的镜像提供了除了内核外完整的运行时环境,确保了应用运行环境的一致性,从而不会再出现[这段代码在我的机器上运行没有问题]这类的问题!

  • 持续交付和部署

对于开发和运维(DevOps)人员来说,最希望的就是一次创建或者配置,可以在任意地方正常运行。

使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile来进行镜像的构建,并且结合持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速的部署该镜像,甚至结合持续部署系统进行自动部署。

而且使用Dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运维所需条件,帮助更好的生产环境部署该镜像。

  • 更轻松的迁移

    由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机还是虚拟机、公有云。私有云。甚至是笔记本,其运行结果是一致性的。因此用户可以很轻松的将在一个平台上运行的应用,迁移到另外一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况

  • 更轻松的维护和扩展

Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更加的容易,也使得应用的维护更新变得更加简单,基于基础镜像进一步扩展镜像也变得非常简单,此外,Docker团队各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境中使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

1.3容器与虚拟机的比较

下面的图片Docker和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统的方式则是在硬件层面实现的。

与传统的虚拟机相比,Docker优势体现在启动速度快、占用体积小

特性容器虚拟机
启动秒级分钟级
硬盘使用一般为MB一般为GB
性能接近原生弱于
系统支持量单机支持上千个容器一般为几十个

1.4Docker组建

1.4.1Docker服务器与客户端

Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker也提供了一个命令行工具Docker以及一整套RESful API。亦可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到另外一台宿主机的远程Docker守护进程

1.4.2Docker镜像与容器

镜像是架构Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步的构建出来的:例如:

  • 添加一个文件;

  • 执行一个命令;

  • 打开一个窗口;

也可以将镜像当做容器的“源代码”。镜像体积很小,非常“便携”,抑郁分享、存储和更新。

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

和集装箱一样,Docker在执行上述操作时,并不会关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。

Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Refistry,然后下载到另一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中,像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

1.4.3Registry(注册中心)

Docker用Registry来保存用户构建的镜像。Registry分为共有和私有两种。Docker公司运行公共的Refistry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并且保存自己的镜像(在Docker HUb 下载镜像巨慢,可以自己构建私有的Registry)。

2、Docker安装

Docker官方建议在ubuntu1中安装,因为Dock而是基于Ubuntu发布的,而且一般Docker出现问题Ubuntu是最先更新或者打补丁的,在很多版本的center os中是不支持更新最新的一些补丁包的。

1、yum包更新到最新

yum update 

2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemappper驱动依赖的

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

3、设置yum源为阿里云

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装docker

yum install -y docker-ce

5、查看是否安装成功

[root@centos7 ~]# docker -v
Docker version 24.0.2, build cb74dfc

2.2设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的utuntu5.04版本的时候就在用,ustc的docker镜像加速器速度很快。ustc docker mirrror的优势之一就是不需要注册,是真正的公共服务。

http://lug.ustc.edu/wiki/mirrors/help/docker

编辑该文件

[root@centos7 ~]# mkdir -p /etc/docker/
[root@centos7 ~]# vim /etc/docker/daemon.json

在文件中输入如下内容

{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

2.3Docker的启动与停止

启动docker:

systemctl start docker

停止docker:

systemctl stop docker.socket 

查看docker运行状态

systemctl status docker

设置docker开机自启:

systemctl enable docker

3、docker常用命令

3.1镜像

查看镜像:

docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

搜索镜像:

docker search php

拉取镜像:

docker pull centos:7

删除镜像:

docker rmi 镜像id

3.2容器相关命令

3.2.1查看容器

查看正在运行的容器:

[root@centos7 ~]# docker ps

查看所有容器:

[root@centos7 ~]# docker ps -a

3.2.2创建与启动容器

创建容器命令

docker run

-i:表示运行容器

-t:表示容器启动后会进入其命令行,加入这两个参数后,容器创建爱你就能登录进去。即分配一个伪终端。

--name:为创建的容器命名。

-v:表示目录映射关系(前者是宿主机目录,后者为映射到宿主机上的目录),可以使用多个v做多个目录或者文件映射。

注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-d:在run后面加上一个-d参数,则会创建一个守护式容器在后台运行(这样创建容器后就不会自动登录容器,如果只加-i,-t两个参数,创建后就会自动进入到容器中)。

-p:表示端口映射,前者是宿主主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

1、交互式方式创建容器

docker run -it --name=mycentos centos:7 /bin/bash

2、守护式方式创建容器

docker run -di --name=mycentos2 centos:7

登录容器:

docker exec  -it mycentos2 /bin/bash

停止容器:

docker stop f7f6b0dbd985

启动容器

docker start mycentos2
mycentos2
​

3.2.3容器的文件操作

将宿主机中的文件拷贝到容器中:

docker cp anaconda-ks.cfg mycentos2:/usr/local
Successfully copied 3.58kB to mycentos2:/usr/local

进入mycentos容器中进行查看:

docker exec  -it mycentos2 /bin/bash
​
ls
anaconda-post.log

将容器中的文件拷贝到宿主机中

docker cp mycentos2:/usr/local/anaconda-ks.cfg anaconda-ks2.cfg
Successfully copied 3.58kB to /root/anaconda-ks2.cfg

3.2.4目录挂载

创建一个新的容器:

[root@centos7 ~]# docker run  -di -v /usr/local/mydata/:/usr/local/mydata --name=mycentos3 centos:7
cd0247073e3ff747fd68ada87a26e432f77446b069bea84cbe94109f63a69182

在该目录下创建文件:

vim /usr/local/mydata/test
写入内容:abcddd

进入mycentos中查看:

docker exec  -it mycentos3 /bin/bash
cd /usr/local/mydata/
cat test
abcddd

3.2.5查看容器IP地址

查看容器的全部信息:

docker inspect mycentos3

查看指定信息:

docker rm cd0247073e3f
cd0247073e3f

删除某容器:

docker rm cd0247073e3f
cd0247073e3f

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

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

相关文章

这可能是最全的Web测试各个测试点,有这一篇就够了

前言 什么是Web测试? Web测试测试Web或Web应用程序的潜在错误。它是在上线前对基于网络的应用程序进行完整的测试。 Web测试检查 功能测试 易用性测试 接口测试 性能测试 安全测试 兼容性测试 1、功能测试 测试网页中的所有链接、数据库连接、网页中用于提交或从…

结合具体代码理解yolov5-7.0锚框(anchor)生成机制

最近对yolov5-7.0的学习有所深入,感觉官方代码也比较易读,所以对网络结构的理解更进一步,其中对锚框生成这块没太看明白细节,也想弄明白这块,于是前前后后好好看了代码。现在把我的学习收获做一下记录。个人见解&#…

如何在大规模服务中迁移缓存

当您启动初始服务时,通常会过度设计以考虑大量流量。但是,当您的服务达到爆炸式增长阶段,或者如果您的服务请求和处理大量流量时,您将需要重新考虑您的架构以适应它。糟糕的系统设计导致难以扩展或无法满足处理大量流量的需求&…

第三章 decimal模块

1. decimal 模块介绍 decimal 模块是 Python 提供的用于进行十进制定点和浮点运算的内置模块。使用它可以快速正确地进行十进制定点和浮点数的舍入运算,并且可以控制有效数字的个数。 使用 decimal 模块主要是因为它与 Python 自带的浮点数相比,有以下…

关于Stream流和Lambda表达式,这些技巧你都知道吗?

💧 关于 S t r e a m 流和 L a m b d a 表达式,这些技巧你都知道吗? \color{#FF1493}{关于Stream流和Lambda表达式,这些技巧你都知道吗?} 关于Stream流和Lambda表达式,这些技巧你都知道吗?&…

2014年全国硕士研究生入学统一考试管理类专业学位联考写作试题

2014年1月真题: 四、写作:第56~57小题,共65分。其中论证有效性分析30 分,论说文35分。 56.论证有效性分析: 分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600字左右的文章,对该论证的有效性进行分析和评论。…

马克思第二章

1.实践和认识 实践决定认识,认识又反作用于实践 实践的特点: 1.直接现实性 2.自觉能动性 3.社会历史性 实践和认识的关系 1.实践是认识的来源 2.实践是认识的目的 3.实践是认识的发展动力 4.实践是检验认识真理的唯一标准 5.认识又反作用于实践&#xf…

gocv Windows10下编译和安装(opencv4.7)

opencv居然还没有官方的golang版,出乎意料。为了编译安装这玩意,折腾了一下午,记录下: 资源提前下载 1、 MinGW-w64 这里的坑是对于只懂一点点的人,容易选错版本: 没仔细看的人很可能会选win32的&#x…

【EDA软件互转】PADS转Allegro

1. 使用pads软件打开PCB文件,然后执行菜单命令:File->Export->弹出的对话框中点击“保存”。然后按下图设置后点击“OK”按钮,会在当前目录下生成一个前面保存的asc文件;如果点击OK后有弹出其它提示就点击“确定”就好…

在编写测试报告的时候,我们有哪些点需要注意的呢?

测试报告作为测试人员的核心输出项,是体现自己工作价值的重要承载工具,需要我们认真对待,所以我们要重视测试报告的输出,那么在编写测试报告的时候,我们有哪些点需要注意的呢? 1、不要乱用模板 很多测试新…

CTR预估之WideDeep系列(下):NFM/xDeepFM

在上一篇文章中CTR预估之Wide&Deep系列模型:DeepFM/DCN,学习了Wide & Deep这种通用框架:wide组件的线性模型的显性低阶特征交叉提供记忆能力,deep组件的深度网络模型的隐式高阶特征交叉提供泛化能力,还有DeepFM和Deep&…

蓝桥杯刷题篇①

前言:hello各位童学们好呀!许久不见!本文为本人的蓝桥杯OJ的刷题笔记!文章隶属于专栏蓝桥杯,该专栏的目的是为了记录自己的刷题记录和学习过程,激励自己不断前行,为明年的ACM、ICPC、蓝桥杯等比…

CVPR2023最佳论文提名(12篇)

CVPR2023公布了12篇最佳论文候选文章。(直接点击标题可以查看原文~) Ego-Body Pose Estimation via Ego-Head Pose Estimation 单位:Stanford-----------关键词:姿态估计 3D Registration With Maximal Cliques 单位&…

三层交换机与路由互联配置(华为设备)

#三层交换机与路由器配置配置 #三层交换机与路由器配置配置 路由器配置 #进入系统视图 <Huawei>system-view #关闭系统提示信息 [Huawei]undo info-center enable #配置一个环回口 [Huawei]int LoopBack 0 #配置IP地址 与 掩码 [Huawei-LoopBack0]ip address 1.1.…

基于matlab使用自定义辐射方向图进行天线阵列分析(附源码)

一、前言 此示例演示如何使用自定义天线辐射方向图创建天线阵列&#xff0c;然后如何分析阵列的响应方向图。这种模式可以通过测量或模拟获得。 二、导入辐射图 根据应用的不同&#xff0c;实用的相控天线阵列有时会使用专门设计的天线元件&#xff0c;其辐射方向图无法用闭式方…

Java018——Java方法

什么是方法&#xff1f; 方法的作用&#xff1f; 方法的定义 方法的使用 一、什么是方法&#xff1f; Java方法是语句的集合 二、方法的作用&#xff1f; 它们&#xff08;语句&#xff09;在一起执行一个功能。 三、方法的定义 格式&#xff1a; 修饰符 返回值类型 方法名…

PostgreSQL(九)内置系统视图

目录 一、系统视图二、 pg_stat_activity 视图1.简介2.核心字段3.全部字段 一、系统视图 PGSQL 中提供了一系列内置的视图&#xff0c;包括系统视图和其他视图。 系统视图提供了查询系统表的一些便利的访问方法。其他视图提供了访问内部服务器状态的方法。 官方文档&#xf…

Spring Boot是什么?详解它的优缺点以及四大核心

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、Spring Boot 是什么&#xff1f; 二、Spring Boot 的优缺点 1、优点 ①可快速构建独立的 Spring 应用 ②直接嵌入Tomcat、Jett…

【Python GUI编程系列 01】安装python pycharm 和 pyside6

Python GUI编程系列 01 安装python pycharm 和 pyside61、安装python2、安装pycharm3、安装 pyside6 安装python pycharm 和 pyside6 本系列使用python3 pycharmpyside6 来进行python gui设计&#xff0c;首先我们来配置编程环境 PS&#xff1a;为了减少复杂程度&#xff0c;本…

学习HCIP的day.15

目录 三层架构 一、网络拓扑冗余 1、线路冗余 2、设备冗余 3、网关冗余 4、电源冗余 二、三和一&#xff08;网关、根网桥、SVI&#xff09; 三、管理vlan 四、三层交换机 五、网关冗余 六、名词注解&#xff1a; 七、数据交换方法&#xff1a; 1、原始交…