小白到运维工程师自学之路 第六十集 (docker的概述与安装)

news2024/9/23 15:33:05

一、概述

1、客户(老板)-产品-开发-测试-运维à项目周期不断延后,项目质量差。

随着云计算DevOps生态圈的蓬勃发展,产生了大量优秀的系统和软件。软件开发人员可以自由选择各种软件应用环境。但同时带来的问题就是需要维护一个非常庞大的开发(Dev)、测试(Test)、预上线(UAT)和生产环境(Pro)。面对这种情况,Docker容器技术横空出世、提供了简单、灵活、高效的解决方案,不需要过多地改变现有的使用习惯,就可以和已有的工具进行整合。因此,掌握Docker相关技术也是途径云计算的必经之路。

Docker是在Linux容器里运行应用的开源容器管理工具,可以理解为轻量级的“虚拟机”。它诞生于 2013 年初,最初是 DotCloud 公司内部商业版项目,后来更换架构师,此架构师将Docker进行了开源,导致Docker使用人员增多。基于 Google公司推出的 Go(Golang) 语言开发。该项目后来加入了Linux基金会,遵从了Apache 2.0协议进行推广,项目代码在 GitHub(https://github.com/docker)上进行维护。

Docker 自开源后受到广泛的业内人士及社区的关注,以至于DotCloud公司后来都改名为 Docker Inc。RedHat系列系统从 RHEL6.5 版本开始支持 Docker;Google 也在其 PaaS 产品中广泛应用。

官方网站:Docker: Accelerated, Containerized Application Development。

2、云计算模式

IAAS 基础设施及服务   Kvm/Docker+Openstack

PAAS 平台即服务       Docker+Kubernetes

SAAS 软件即服务

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。鲸鱼可以看做宿主机,而集装箱可以理解为实现应用相互隔离的容器,每个集装箱中都包含自己的应用程序。正如Docker的设计宗旨一样:Build、Ship and Run Any App、Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理、达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker在Linux原有的 LXC 技术的基础上进行二次封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。相同的容器类软件还有很多。

传统虚拟化技术结构中底层是服务器硬件,硬件上运行着宿主机的操作系统兼虚拟化平台,通过在虚拟化出硬件设备上部署操作系统,在操作系统之上运行应用服务。而虚拟化出硬件中的操作系统将占用大量的服务器硬件资源浪费。

容器技术技术结构中底层硬件上运行宿主机操作系统,在宿主机操作系统上运行Docker引擎,无需虚拟化硬件,也不用部署操作系统,而是直接运行容器,提供所需的应用服务隔离环境,极大的提高了资源利用率。

3、虚拟化架构:

寄居架构 VMware Workstation

原生架构 VMware ESXI

作为一种新兴的虚拟化方式, Docker 跟传统的虚拟化方式相比具有众多的优势。

Docker 容器的启动可以在秒级实现,相比传统的虚拟机方式要快很多。Docker核心解决的问题是利用容器来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源,所以Docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,从而保证应用性能的同时,减小系统开销,使得在一台主机上同时运行数千个Docker容器成为可能;Docker操作方便,还可以通过Dockerfile配置文件支持灵活的自动化创建Docker镜像。

4、Docker的使用场景

Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。例如:项目从腾讯云迁移阿里云,如果采用了Docker容器技术,迁移只需要在新的云服务器上启动项目需要的容器即可。

、Docker的优点

1、快速的交付和部署

对(DevOps)人员来说,最希望的就是项目环境一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套项目开发容器,代码开发完成之后,运维人员可以直接此容器打包迁移。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker将会大量地节约开发、测试、部署的时间。

2、更高效的虚拟化

Docker容器的运行不需要额外的管理系统支持,它是内核级的虚拟化,并且容器调用的是宿主机的bin和lib。因此可以实现更高的性能和效率。

3、更轻松的迁移和扩展

Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。

4、简单的管理

使用 Docker只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

、Docker的核心概念

1、镜像(Image)

镜像是创建容器的基础,镜像类似传统虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板。比如:一个镜像可以包含一个完整的 CentOS 操作系统环境,里面仅安装了 Apache的应用程序(称之为Apache镜像)或用户需要的其它应用程序。

Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像(堆叠),用户甚至可以直接从其他人那里获取一个已经做好的镜像来直接使用。

2、容器(Container)

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。多个容器之间都是相互隔离的、保证了应用平台的安全性。可以把容器看做是一个正在运行的简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的一个或一组应用程序。Docker容器用来运行和隔离应用地方。

3、仓库(Repository)

仓库是集中存放镜像的地方。通常会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的官方镜像供用户下载。国内的公开仓库有Docker Pool等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

四、Docker的安装(这里主要安装linux版本的)

Docker支持在主流的操作系统平台上使用,包括Windows系统、Linux系统及MacOS系统等。目前最新的RedHat 、CentOS、Ubuntu等操作系统官方软件源中都已经默认自带了Docker包,可以直接安装使用,也可以用Docker自己的YUM源进行配置。

Docker发行版本:

  1. Docker-EE 企业版 (企业版由于投入较大国内大多数用的都是社区版)
  2. Docker-CE 社区版 (社区版是docker开源的一款软件国内使用的主流)

 1、Windows安装Docker

运行DockerToolbox-1.11.2

                             

一路下一步

                                   

所有都安装

 

点击完成

 

运行Docker Quickstart Terminal

 

2、Linux安装Docker

CentOS系统下安装Docker可以有两种方式:一种是使用curl获得Docker的安装脚本进行安装,另一种是使用YUM仓库来安装Docker。主要注意的是目前Docker只能支持64位系统。

iptables -F                  关闭防火墙
setenforce 0
systemctl stop firewalld
ping www.baidu.com           测试是否可以联网(需要联网)
yum -y install docker        安装docker
systemctl start docker       启动docker
systemctl enable docker      设置为开机自启
docker version               查看docker版本

 

 安装docker-ce

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce

阿里云镜像加速器(由于docker是谷歌公司旗下的产物,不设置镜像源的话下载速度会很慢)

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台欢迎登录阿里云,全球领先的云计算及人工智能科技公司,阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业应用、物联网等云计算服务。https://cr.console.aliyun.com/

vim /etc/docker/daemon.json            为docker指定下载源
{
        "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END

systemctl daemon-reload                刷新
systemctl restart docker               重启

 五、Docker基础操作

docker verion              查看版本
docker info                查看详细信息

Docker镜像操作

Docker创建容器前需要本地存在对应的镜像,如果本地加载不到相关镜像,Docker默认就会尝试从镜像仓库https://hub.docker.com下载,这是由Docker官方维护的一个公共仓库,可以满足用户的绝大部分需求,用户也可以通过配置来使用自定义的镜像仓库。

1、docker search //从Docker Hub搜索镜像

命令格式:docker search 关键字

参数:

--automated=false 仅显示自动创建的镜像

--no-trunc=false  输出信息不截断显示

-s, --stars=0  指定仅显示评价为指定星级以上的镜像

docker search nginx   这里以nginx做测试

2、获取镜像

搜索到符合需求的镜像,可以使用docker pull 命令从网络下载镜像到本地使用。

命令格式:docker pull 镜像名称[:标签]

对于Docker镜像来说,如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为latest,也可以通过指定的标签来下载特定版本的某一镜像。这里标签就是用来区分镜像版本的。

docker pull nginx

 3、查看镜像信息

使用docker images命令查看下载到本地的所有镜像。

命令格式:docker images 仓库名称[:标签]

docker images 

4、获取镜像的详细信息

命令格式:docker inspect 镜像名或镜像ID

docker inspect

 5、为镜像添加新的标签

命令格式:docker tag 名称[:标签] 新名称[:新标签]

docker tag nginx nginx:test

6、删除镜像

使用docker rmi 命令可以删除多余的镜像。

删除镜像的操作有两种方法:使用镜像的标签删除镜像;使用镜像的ID删除镜像。

命令格式:

docker rmi 镜像名称[:标签]

docker rmi 镜像ID

 docker rmi nginx:test

以上就是docker的基础操作

如有错误欢迎各位大佬批评指正,我们共同进步

 

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

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

相关文章

HTTP——HTTP报文内的HTTP信息

HTTP 通信过程包括从客户端发往服务器端的请求及从服务器端返回客户端的响应。本章就让我们来了解一下请求和响应是怎样运作的。 HTTP 一、HTTP报文二、请求报文及响应报文的结构三、编码提升传输速率1、报文主体和实体主题的差异2、压缩传输的内容编码3、分割发送的分块传输编…

【数据分享】1999—2021年地级市地区生产总值及一二三产构成数据(Shp/Excel格式)

在之前的文章中,我们分享过基于2000-2022年《中国城市统计年鉴》整理的1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、地方一般公共预算收支状…

ABeam China Global | 探索赞比亚:非洲市场商机、产业发展与劳动挑战(下)

前情回顾 ABeam China Global | 探索赞比亚:非洲市场商机、产业发展与劳动挑战(上) 在「探索赞比亚」系列的上期,我们介绍了森大集团、非洲市场概述,以及“SADC”这一地区经济组织。本期我们将视角聚焦到赞比亚&…

Android Studio多渠道打包

使用环境: Android studio 多渠道打包 使用方法: 1 APP下build.gradle文件 flavorDimensions "default"productFlavors {huawei {dimension "default"manifestPlaceholders [ channel:"huawei" ]}xiaomi {dimension &…

LLM微调 | Adapter: Parameter-Efficient Transfer Learning for NLP

目的:大模型预训练微调范式,微调成本高。adapter只只微调新增的小部分参数【但adapter增加了模型层数,引入了额外的推理延迟。】 Adapters最初来源于CV领域的《Learning multiple visual domains with residual adapters》一文,其…

数据库信息速递, RAFT 原生系统是未来数据流式系统的未来

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

功能测试之兼容性测试点和注意项

一:兼容性测试的概念:就是验证开发出来的程序在特定的运行环境中与特定的软件、硬件或数据相组合是否能正常运行、有无异常的测试过程。 二:兼容性测试的分类: (1)浏览器兼容性测试 指的是在浏览器上检查…

第四课:逻辑控制

1.分支语句 (1)if语句 练习 1.判断一个数字是奇数还是偶数 public static void main(String[] args) {int a 10;if (a % 2 1){System.out.println("a是奇数");}else{System.out.println("a是偶数");}} 2.判断一个年份是否为闰年…

Django学习记录:初步认识django以及实现了简单的网页登录页面的前后端开发

Django学习记录:初步认识django以及实现了简单的网页登录页面的前后端开发 1、可以先删去template文件夹,并在setting里面删掉这一行 2、在pycharm中创建app: 3、启动app:编写URL与视图函数关系【urls.py】 ​ 编写视图函数【vi…

HCIA-datacom数通题库和录播视频资料

HCIA-Datacom,是华为数通认证的初级考试,培训与认证具备数通基础通用知识和技能水平的工程师,只是入门了解数通的一些基础通用知识,适用于小白了解和学习数通知识点起点。 个人建议还是有必要考的,如果在企业考试考试…

Java版本spring cloud 工程项目管理系统源码

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈,内卷严重&#xff0c…

助力保险行业数字化创新,麒麟信安参展2023中国财险科技应用高峰论坛

2023年7月27日,由中科软科技股份有限公司主办的“中国财险科技应用高峰论坛”在北京古北水镇成功举办。作为享誉中国保险科技界的盛会,本次活动以“数智保险 创新未来”主题,汇聚全国数百位保险公司主管领导、资深保险行业信息化专家&#xf…

在PHP8中检测数据类型-PHP8知识详解

在PHP 8中,可以使用多种方法来检测数据类型。以下是常用的四种方法:使用 gettype() 函数、使用 is_* 系列函数、使用 get_debug_type() 函数、使用 get_class() 函数。 一、使用 gettype() 函数 gettype() 函数返回给定变量的数据类型。例如&#xff1a…

【Git系列】IDEA集成Git

🐳IDEA集成Git 🧊1. idea配置git🧊2. idea添加暂存区和提交🪟创建文件🪟将整个项目添加到暂存区🪟提交到本地仓库🪟查看控制台,显示提交的信息🪟修改文件,再次…

matlab编程实践14、15

目录 数独 "四独"游戏 解的存在和唯一性 算法 常微分方程 数独 采用蛮力试凑法来解决数独问题。(采用单选数,以及计算机科学技术中的递推回溯法) 以上的数独是图14-2的两个矩阵的和,左侧的矩阵可以由kron和magic函…

软件测试之性能测试实施流程

软件测试之性能测试实施流程: 1.测试需求分析 测试需求分析是整个性能测试的基础,在这一阶段测试负责人要和项目干系人进行沟通,同时手机各种项目资料,尤其要搞清楚用户对待性能测试的核心需求。 测试需求分析阶段的主要任务是确…

小红书2020校招测试开发后端笔试题卷三

//完全背包求组合数 #include <iostream> #include<vector> #include<set> #include<map> #include<algorithm> using namespace std; int value[300]; // vector<int>vis; // vector<int>vis1; map<vector<int>,int>m…

Verilog语法学习——LV3_奇偶校验

LV3_奇偶校验 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 题目描述&#xff1a; 现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果&#xff0…

【GITHUB】FlipIt – Windows的开源翻页时钟

FlipIt 是一款免费开源的翻页时钟应用&#xff0c;专为 Windows 平台设计。该应用灵感来源于备受喜爱的老牌翻页时钟应用 Fliqlo&#xff0c;后者被公认为经典的翻页时钟屏保。然而&#xff0c;由于 Fliqlo 是基于 Flash 技术开发的&#xff0c;随着微软最近正式禁用 Flash&…

《cuda c编程权威指南》03 - cuda小功能汇总

1. 计时 1.1 linux #include <sys/time.h>double cpuSecond() {struct timeval tp;gettimeofday(&tp, NULL);return ((double)tp.tv_sec (double)tp.tv_usec*1e-6); }// 调用 double start cpuSecond(); kernel_name << <grid, block >> > (ar…