Docker入门-上篇

news2024/11/26 8:55:51

Docker容器技术的使用,现在它已经不仅仅只是运维人员的专属技能了,对于我们开发人员同样需要具备,在很多中小公司中云环境的项目搭建和项目部署依然还是我们开发人员干的事,所以多学一门技术总是没错的。

1.Docker介绍

Docker最初是PaaS云服务平台提供商dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以Apache2.0授权协议开源,主要项目代码在GitHub上进行维护。Docker项目后来还加入了Linux基金会,并成立推动开放容器联盟(OCI)。

Docker自开源后受到广泛的关注和讨论,无论是从 github上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连Google的Compute Engine也支持docker在其之上运行。甚至由于 Docker项目的火爆,在2013年底,dotCloud公司决定改名为Docker。

Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于LXC,从0.7版本以后开始去除LXC,转而使用自行开发的libcontainer,从1.11开始,则进一步演进为使用runC和containerd。

下面的图片比较了Docker和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而Docker容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

在这里插入图片描述

图1.1-传统虚拟化

在这里插入图片描述

图1.2-Docker

Docker优点

·环境搭建和部署方便

以前要在Linux上搭建应用所需的一些环境不是一件容易的事,往往一个环境出现一些小问题可能都耗费我们很久的时间,并且搭建了环境应用部署和管理也不是一件容易的事。而又了Docker我们可以很轻松的搞定环境的问题,只需要下载一个镜像或几个镜像然后创建容器运行即可。

·可移植性强Docker

可以让开发者打包他们的应用以及依赖包到一个或多个可移植的容器中,然后发布到任何流行的Linux机器上。Docker可以对其中的镜像环境(比如:tomcat、jdk、redis等)的启动、重启、停止等都可以进行管理。

·隔离性

Docker可以确保你的应用程序与资源是分隔开的。Docker中每一个容器都拥有自己的资源,并且跟其他容器都是隔离开的。这样我们就可以使用Docker的容器运行多个不同的应用程序,并且我们不需要它的时候删除容器即可,非常的方便并且也不会影响其他的应用。

·快速实现版本回滚
在没有容器之前,我们现在的应用出现问题需要回滚的时候,我们需要借助于git等其他工具把代码回滚到以前状态,然后重新打包部署起来,这个过程肯定不是很快能够完成。而Docker就可以像git一样对器进行版本的提交和回滚,从而可以快速实现应用的回滚。

2.Docker架构

Docker使用客户端-服务器 (C/S) 架构模式,主要由两部分组成:

·Docker:开源的容器虚拟化平台

·Docker Hub:用于分享、管理Docker容器的 Docker SaaS平台

Docker客户端会与Docker daemon守护进程进行通信。Docker守护进程会处理复杂繁重的任务,例如建立、运行、发布你的Docker容器。Docker客户端和守护进程可以运行在同一个系统上,当然你也可以使用 Docker客户端去连接一个远程的Docker守护进程。Docker客户端和守护进程之间通过socket或者 RESTful API进行通信。

在这里插入图片描述

3.Docker的组成

Docker基本上由三个部件组成:

Docker镜像-Docker images

Docker仓库-Docker registeries

Docker容器-Docker containers

·Docker镜像

Docker镜像是Docker容器运行时的只读模板,每一个镜像由一系列的层(layers)组成。Docker使用 UnionFS来将这些层联合到单独的镜像中。UnionFS 允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker是如此的轻量。当你改变了一个 Docker镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发Docker镜像变得简单和快速。

·Docker容器

Docker容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个Docker 容器都是从Docker镜像创建的。Docker容器可以运行、开始、停止、移动和删除。每一个Docker容器都是独立和安全的应用平台,Docker容器是Docker的运行部分。

·Docker仓库

Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。同样的,Docker仓库也有公有和私有的概念。公有的Docker仓库名字是Docker Hub。Docker Hub提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker仓库是Docker的分发部分。

这三个部件也可以这样来形象的理解:Docker镜像为我们要安装应用的安装包文件,而Docker容器就是安装包安装好可以运行的应用程序只不过一个镜像可以创建很多的容器程序,Docker仓库就是可以下载Docker镜像的一个应用商店。

4.Docker的安装、启动和镜像加速配置

Docker划分为CE和EE。CE即社区版(免费,支持周期三个月),EE即企业版,强调安全,付费使用。官方网站上有各种环境下的安装指南,Docker CE在 Linux、Windows 10 (PC)和macOS上的安装。

CE和EE的主要区别:

1.EE兼容更多的操作系统。

2.EE更加的安全。

因为服务器系统都是CentOS(Linux操作系统的一种),所以这里只介绍CentOS的安装及使用。

Docker CE支持64位版本CentOS 7,并且要求内核版本不低于3.10。CentOS 7满足最低内核的要求,但由于内核版本比较低,部分功能(如overlay2存储层驱动)无法使用,并且部分功能可能不太稳定。

Docker安装:

在现在版本的Docker引擎安装中,通常主要使用两种方式:设置Docker的存储库并从中进行安装或者使用自动脚本安装(其实还有rpm软件包安装),其实使用脚本安装的方式也是运行了方式一中的yum命令进行安装的。

在安装之前,如果系统上存在较旧版本的Docker的话,我们先进行卸载。较旧的Docker版本称为docker或docker-engine。

sudo yum remove docker \

                      docker-client \

                      docker-client-latest \

                      docker-common \

                      docker-latest \

                      docker-latest-logrotate \

                      docker-logrotate \

                      docker-engine

(1)使用Docker存储库安装

在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。安装yum-utils软件包(提供yum-config-manager实用程序)并设置稳定的存储库。

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

同样也可以使用阿里云的:

$ sudo yum-config-manager \

--add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

然后安装docker引擎:

$ sudo yum install docker-ce docker-ce-cli containerd.io

如果需要安装特点版本的docker引擎,可以使用以下命令:

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

(2)使用脚本自动安装

在测试或开发环境中Docker官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS系统上可以使用这套脚本安装:

官方安装脚本:

curl-fsSL https://get.docker.com | bash -s docker–mirror Aliyun

也可以使用国内daocloud一键安装命令:

curl-sSL https://get.daocloud.io/docker | sh

启动Docker:

安装好Docker之后,为了方便我们把Docker设置为开机自启:

$ sudo systemctl enable docker.service

然后启动Docker:

$ sudo systemctl start docker

最后测试下我们安装的Docker是否能用:

$ sudo docker version

镜像加速:

国内从Docker Hub拉取镜像的时候太慢,并且有的时候还会拉取失败,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

·Docker官方提供的中国registry mirror

·阿里云加速器

·DaoCloud加速器

我们以阿里云加速器为例进行介绍,注册阿里云账号,并在“容器镜像服务”->“镜像库”->“镜像加速”中可以看到自己的镜像加速地址,如图:

在这里插入图片描述

镜像加速配置之后,需要重启Docker才能生效:

$ systemctl daemon-reload

$ systemctl restart docker

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

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

相关文章

Ubuntu下解压文件(提取文件总是报错)文件是zip 格式

删除非空文件夹&#xff1a;在该目录下打开终端&#xff1a;sudo rm -r 文件夹名 回到不能解压问题&#xff08;unzip总是容易出问题&#xff09; 安装7zip&#xff1a;sudo apt-get install p7zip-full 解决办法1&#xff08;解压出来好的数据&#xff09;: 使用7z解压文件&…

附录6-JS中的一些概念

1 深拷贝与浅拷贝 在这几个地方涉及到了拷贝 23. 节点_Suyuoa的博客-CSDN博客 复制节点 node.cloneNode() 深拷贝实质上是拷贝要拷贝的对象自身&#xff0c;浅拷贝实质上是对要拷贝对象的引用。 当你浅拷贝复制A为B的时候&#xff0c;改动B会给A造成影响 当你深拷贝复制A…

极速Go语言入门(超全超详细)-进阶篇

基础篇可访问此链接: 基础篇1:https://blog.csdn.net/asd1358355022/article/details/127905011?spm1001.2014.3001.5501 基础篇2:https://blog.csdn.net/asd1358355022/article/details/128039005?spm1001.2014.3001.5501 文章目录GO语言类型断言文件操作打开、关闭、读取文…

第二证券|券商12月金股出炉!多只地产股成热门,科创仍是中长期主线

跟着券商12月金股战略陈述连续出炉&#xff0c;主流组织的配备风向也浮出水面。 到券商我国记者发稿时&#xff0c;已有10多家券商发布12月金股战略陈述&#xff0c;从职业散布来看&#xff0c;信息技术、工业范畴的金股数量最多&#xff0c;其次是材料、可选消费、医疗。值得一…

前端二倍图

物理像素&物理像素比&#xff1a; 物理像素点指的是屏幕显示的最小颗粒&#xff0c;是物理真实存在的&#xff0c;这是厂商在出厂时设置好了我们开发时候1px不是一定等于1个物理像素的Pc端页面&#xff0c;1px等于1个物理像素点&#xff0c;但是移动端就不尽相同一个px能显…

打包发布自己的app

创建自己的app 一、 安装HBuilderX 二、 引入代码&#xff0c;引入组件 三、 配置app信息 四、 云打包 1、第一步 2、第二步 3、证书创建是用的jdk8创建的&#xff0c;软件里带教程&#xff0c;也可以用公共测试证书。 五、打出的包是apk文件&#xff0c;配合我的搭建网…

ROG幻15电脑开机自动安装软件怎么U盘重装系统

ROG幻15电脑开机自动安装软件怎么U盘重装系统。今天和大家一起来分享如何解决ROG幻15电脑开机的时候会自动安装软件的问题。用户反馈开机之后自动后台安装很多软件&#xff0c;导致无法操作卡死。这个情况我们可以使用U盘来重装一些系统&#xff0c;这样就可以解决问题&#xf…

(二)正则表达式——捕获

&#xff08;二&#xff09;正则表达式——捕获 正则捕获的懒惰性 实现正则捕获的方法&#xff1a;exec exec返回的结果&#xff1a; 懒惰性 这就是正则捕获的懒惰性&#xff1a;默认只捕获第1个 lastIndex&#xff1a;下次匹配的开始位置 懒惰的原因&#xff1a;默认lastIndex…

视频播放 (一) VideoView的使用

1. 配置参数 1.1 AndroidManifest.xml 文件添加网络权限 <uses-permission android:name"android.permission.INTERNET" /> 1.2 http 明文请求设置 android:usesCleartextTraffic"true" 1.3 activity 配置屏幕变化&#xff0c;不重新加载 Activity …

多数据中心多活相关知识

Cell&#xff1a;业务可封闭收敛最小执行分片&#xff1b;业务对请求空间按一定维度&#xff08;比如会员、门店等&#xff09;划分分片。 LDC&#xff1a;逻辑数据中心&#xff0c;是由多个业务可封闭 cell 组成的集合单元&#xff0c;拥有独立的基础中间件系统&#xff08;包…

树莓派4b通过docker安装部署jenkins

借鉴&#xff1a;https://blog.csdn.net/wz_coming/article/details/113523610 树莓派的docker安装及其他操作请看&#xff1a;https://blog.csdn.net/weixin_44578029/article/details/127987795 前言 我的环境是树莓派4b&#xff0c;安装的官方64 debian11系统 arm架构 4h…

[附源码]SSM计算机毕业设计疫情状态下病房管理平台JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Kafka第一讲:应用场景及架构设计详解

本节是Kafka专题第一篇&#xff0c;主要介绍Kafka的发展历史、应用场景以及Kafka的基本架构&#xff0c;后续还会对Kafka的生产者、Broker、消费者、集群做详细讲解&#xff0c;敬请期待。 1.kafka的发展历史及应用场景 1.1kafka的定位 可以实现如下功能&#xff1a; 1.2为什…

『航班乘客满意度』场景数据分析建模与业务归因解释 ⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; 数据分析实战系列&#xff1a;https://www.showmeai.tech/tutorials/40 &#x1f4d8; 机器学习实战系列&#xff1a;https://www.showmeai.tech/tutorials/41 &#x1f4d8; 本文地址&#xff1a;https://www.sho…

vue+elementUI实现级联表格el-table级联多选

vueelementUI实现级联表格el-table级联多选 <template><div id"app"><el-button type"primary" click"getAllSelect()">获取选中集合</el-button><el-table:data"renderDynamic"ref"lendontable"…

DataFun: 微信NLP算法微服务治理

管理问题 性能问题 PyInter&#xff1a;暂未开源&#xff0c;有开源打算 调度问题 P50&#xff1a; 响应的中位数P999&#xff1a;耗时最慢的千分之一 让p999下降为p50的1.5倍

DIY正则图片下载工具

一、初心&#xff1a;如果您擅长正则表达式&#xff0c;可以自定义抓取自定义网页的图片。 二、效果&#xff1a; 目前支持 <img>标签抓取图片正则。更多正则欢迎分项。支持base64图片预览。 三、使用方法&#xff1a; 修改正则表达式&#xff1a;选中即可。同时工具几…

Springboot毕业设计毕设作品,纯净水销售配送管理系统设计与实现

功能清单 在系统里面我们将纯净水的产品统称为商品 【后台管理员功能】 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 会员列表&#xff1a;查看所有注册会员信息&#xff0c;支持删除 资讯分类&#…

基于Abaqus-Simpack联合仿真车辆-浮置板轨道耦合动力学仿真

作者&#xff1a; CAE兮枫如秋 仿真秀专栏作者 一、城市轨道交通中钢弹簧浮置板高级减振轨道 城市轨道交通不仅作为城市亮丽的名片&#xff0c;还在解决城市交通问题中具有特殊的地位和作用。城市轨道交通也是一种安全、快捷、准时、方便、舒适的理想交通工具。伴随着全世界各…

【MM小贴士】SAP创建成本中心采购订单带出默认会计科目和成本中心

在实施SAP项目梳理MM模块业务需求的时候&#xff0c;很多公司都会有这样需求&#xff0c;就是在创建成本中心采购订单的时候&#xff0c;因为成本中心和会计科目是必须输的&#xff0c;所以用户希望系统能够自动带出默认的会计科目和成本中心&#xff08;如下图&#xff09;。 …