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

这篇具有很好参考价值的文章主要介绍了Docker: 改变容器化世界的革命性技术。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件的存储速度,都是比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。

  • 更快速的启动事件

传统的虚拟机技术启动应用服务往往虚拟需要数分钟,而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

删除某容器:文章来源地址https://www.toymoban.com/news/detail-494295.html

docker rm cd0247073e3f
cd0247073e3f

到了这里,关于Docker: 改变容器化世界的革命性技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 视频生成可以无限长?谷歌VideoPoet大模型上线,网友:革命性技术

    蒙娜丽莎打哈欠,小鸡学会举铁……谷歌VideoPoet大模型表现很亮眼。 2023 年底,科技公司都在冲击生成式 AI 的最后一个关卡 —— 视频生成。 本周二,谷歌提出的视频生成大模型上线,立刻获得了人们的关注。这款名为 VideoPoet 的大语言模型,被人们认为是革命性的 zero-sho

    2024年02月02日
    浏览(36)
  • 什么是革命性技术eBPF?为什么可观测性领域都得用它

    如果有一种技术可以监控和采集任何应用信息,支持任何语言,并且应用完全无感知,零侵入,想想是不是很激动,那么这个技术是什么呢?就是eBPF,它应该是最近一两年非常热门的技术名词,我相信你或多或少都看到过,但可能不知道它能做什么,今天我们来讲讲这个革命

    2024年02月04日
    浏览(38)
  • 掌握C++20的革命性特性:Concepts

    C++20 引入了 Concepts,这是一种用于限制类和函数模板的模板类型和非类型参数的命名要求。Concepts 是作为编译时评估的谓词,用于验证传递给模板的模板参数。Concepts 的主要目的是使模板相关的编译器错误更易于人类阅读。 我们都遇到过这样的情况:当为类或函数模板提供错

    2024年01月20日
    浏览(45)
  • ChatGPT:人工智能语言模型的革命性进步

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(41)
  • ChatGPT-4 Alpha:OpenAI的革命性升级

    近日,OpenAI公司发布了备受瞩目的GPT-4 Alpha版本,这是一次革命性的升级。以下将为您详细介绍这一重大突破,并解释为何它引起了广泛关注。 GPT-4 Alpha是OpenAI公司最新推出的人工智能语言模型,它基于GPT-4.0架构开发,拥有更强大的处理能力和更出色的表现。该模型经过大规

    2024年02月20日
    浏览(34)
  • Transformer模型简介:一种革命性的深度学习模型

    Transformer模型是一种革命性的深度学习模型,最初用于自然语言处理任务,如机器翻译和语言建模。与传统的序列模型相比,如循环神经网络(RNN)和卷积神经网络(CNN),Transformer模型采用一种全新的方式来处理序列数据,即通过注意力机制来学习序列中的关系。 在传统的序列模

    2024年02月15日
    浏览(44)
  • 加速软件开发和交付的革命性方法-DevOps

    “ 随着信息技术的快速发展,现代软件开发和交付已经经历了巨大的变革。DevOps(Development和Operations的结合)已经成为这一变革的关键推动力,让开发团队和运维团队之间的界限变得模糊,以加速软件的开发、测试和部署过程。本文将介绍DevOps的核心概念、原则和优势,以及

    2024年02月06日
    浏览(40)
  • 机器学习与人工智能:一场革命性的变革

    1956年8月,在美国汉诺斯小镇宁静的达特茅斯学院中,约翰·麦卡锡(John McCarthy)、马文·闵斯基(MarvinMinsky,人工智能与认知学专家)、克劳德·香农(Claude Shannon,信息论的创始人)、艾伦·纽厄尔(AllenNewell,计算机科学家)、赫伯特·西蒙(Herbert Simon,诺贝尔经济学奖得

    2024年02月04日
    浏览(42)
  • Nuxt.js:下一代Web开发框架的革命性力量

    随着互联网的飞速发展,Web开发已经成为了当今技术领域最热门的话题之一。在这个竞争激烈的市场中,开发者们不断地寻求新的技术和工具来提高开发效率、降低维护成本。而在这个过程中,Nuxt.js作为一款革命性的Web开发框架,正逐渐成为开发者们的宠儿。本文将详细介绍

    2024年02月05日
    浏览(42)
  • 如何将区块链与大数据结合,为行业带来革命性变革

    区块链技术和大数据技术都是21世纪的热门话题之一,它们各自具有独特的优势,如果将它们结合起来,将会为各行业带来革命性变革。区块链技术可以提供一个安全、透明、去中心化的数据共享平台,而大数据技术则可以提供海量、多样化的数据源,这两者的结合将有望解

    2024年04月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包