K8S必备知识--docker的介绍以及安装

这篇具有很好参考价值的文章主要介绍了K8S必备知识--docker的介绍以及安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker:

本身是容器:
容器可以保护内容物

docker最初是dotCloud公司内部的一个业余项目,基于谷歌公司推出的Go语言实现的

以前为了实现同一台机上的各个应用隔离,采用虚拟化技术,但消耗资源过大
各应用的隔离是通过namespace的隔离来实现的

玩容器保证linux内核版本在3.8以上
user-操作进程的用户和用户组实现隔离在内核3.8版本才实现

docker引擎出道即巅峰,便捷,简单,规范

1、Docker是什么?

Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,
并发布和应用到任意平台中。比如,你在本地用Python开发网站后台,
开发测试完成后,就可以将Python3及其依赖包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,
然后部署到任意你想部署到的环境。

Docker的三个概念
镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。
任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。
例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,
就可以称为Apache镜像。

容器(Container):类似于一个轻量级的沙盒,
可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),
以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。
容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。
注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
基于autofs

仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。
注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;
而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,
比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

Docker的安装和卸载
Docker可以安装在Windows、Linux、Mac等各个平台上。
具体可以查看文档Install Docker。安装完成之后,可以查看Docker的版本信息:

容器:镜像运行时的实体
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,
容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。

容器的实质是进程,但与直接在宿主执行的进程不同,
容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。
因此,任何保存于容器存储层的信息都会随容器删除而丢失。

按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据 ,
容器存储层要保持无状态化。

所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,
在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。

数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此, 使用数据卷后,
容器可以随意删除、重新 run,数据却不会丢失。

注意:

容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。
最重要的优点是可在开发和运营之间提供隔离。

仓库:集中存放镜像文件的地方
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其他服务器上使用这个镜像,
我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);
每个标签对应一个镜像。

所以说,镜像仓库是 Docker 用来集中存放镜像文件的地方,类似于我们之前常用的代码仓库。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。

我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。

如果不给出标签,将以 latest 作为默认标签。

这里补充一下 Docker Registry 公开服务和私有 Docker Registry 的概念:

Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。

一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

最常使用的 Registry 公开服务是官方的 Docker Hub ,这也是默认的 Registry,
并拥有大量的高质量的官方镜像,网址为:hub.docker.com/ 。

在国内访问 Docker Hub 可能会比较慢,国内也有一些云服务商提供类似于 Docker Hub 的公开服务。

除了使用公开服务外,用户还可以在本地搭建私有 Docker Registry 。
Docker 官方提供了 Docker Registry 镜像,可以直接使用做为私有 Registry 服务。

开源的 Docker Registry 镜像只提供了 Docker Registry API 的服务端实现,足以支持 Docker 命令,
不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。

Docker的主要应用场景
简化配置
虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统),
Docker在降低额外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署,
同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。

简单的来说,容器镜像打包完成后,它就是个独立的个体了,丢到哪里都能跑,而无需针对各个平台去独立配置。

代码流水线(Code Pipeline)管理
前一个场景对于管理代码的流水线起到了很大的帮助。代码从开发者的机器到最终在生产环境上的部署,
需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,
Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。

提高开发效率
不同的开发环境中,我们都想把两件事做好。一是我们想让开发环境尽量贴近生产环境,
二是我们想快速搭建开发环境。

使用Docker非常简单的就能够实现这两点,而且哪怕是开发环境的机器配置一般的情况下搭建多个生成服务应用。
一台一般配置服务器或开发机也能轻松的跑起多个Docker应用,而无需额外增加机器配置。
因为Docker有个非常NB的特性,拥有虚拟化的特性,而几乎没有额外的开销。

Docker改变了什么?
综上所述,Docker到底改变了什么?笔者是这么理解的:

Docker改变了云服务,使云服务的共融共通的理想逐步成为了可能。
并且Docker 已经是云策略的一部分,许多开发者正在计划使用 Docker 将业务迁移到云端。
另外,为了避免被云服务供应商绑定,Docker成为很多开发者的首选。

Docker改变了产品交付,为产品的整个生命周期提供了一整套的解决方案和流程。

Docker改变了开发方式,提供了简化的环境配置、封装的运行环境以及统一的环境。并且提供了快速部署的方式。

Docker改变了测试,多版本测试变得极为方便,快速构建测试环境也变得更加简单并且无需开发人员干预或者搭建。

Docker改变了运维,环境的一致性让运维变得更加简单,同时热更新的支持让运维不再需要半夜加班部署更新,
更新可以随时进行。当出现重大问题时,还能快速回滚到指定版本。

Docker改变了架构,自动化扩容支持让架构变得更加简单,分布式系统也更加易于搭建和支持。
同时遗留的单体应用也很易于转变为现代应用。

总之,在某种程度上,Docker改变了产品开发中的一些游戏规则。虽然Docker是一项技术,
但是它也带来了新的思维,新的流程和工作方法,Docker在推动行业的发展,Docker已经在改变世界,
并且在逐步的变为事实……

缺点:
太依赖操作系统
依赖网络
银行U盾等场景不能用

2、linux上docker安装

卸载旧版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine

Device Mapper
Docker默认使用AUFS作为存储驱动,但是AUFS并没有被包括在Linux的主线内核中。

CentOS中可以使用Device Mapper作为存储驱动,这是在2.6.9内核版本引入的新功能。
我们需要先确认是否启用该功能:

$ ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 May 1 20:55 /sys/class/misc/device-mapper -> …/…/devices/virtual/misc/device-mapper
如果没有检测到Device Mapper,需要安装device-mapper软件包:

$ sudo yum install -y device-mapper
然后重新加载dm_mod内核模块:

$ sudo modprobe dm_mod

安装docker-ce
参照阿里镜像源安装

CentOS 7(使用 yum 进行安装)
#step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#Step 3
sudo sed -i ‘s+download.docker.com+mirrors.aliyun.com/docker-ce+’ /etc/yum.repos.d/docker-ce.repo
#Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
#Step 4: 开启Docker服务
sudo service docker start

#注意:
#官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。
例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
#vim /etc/yum.repos.d/docker-ce.repo
#将[docker-ce-test]下方的enabled=0修改为enabled=1

#安装指定版本的Docker-CE:
#Step 1: 查找Docker-CE的版本:
#yum list docker-ce.x86_64 --showduplicates | sort -r
#Loading mirror speeds from cached hostfile
#Loaded plugins: branch, fastestmirror, langpacks
#docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
#docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
#docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
#Available Packages
#Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
#sudo yum -y install docker-ce-[VERSION]

查看安装的docker版本:
docker -v

[root@220 ~ ]# docker version
Client: Docker Engine - Community
Version: 20.10.14
API version: 1.41
Go version: go1.16.15
Git commit: a224086
Built: Thu Mar 24 01:49:57 2022
OS/Arch: linux/amd64
Context: default
Experimental: true

docker的配置文件:
/etc/docker/daemon.json

资源目录:
/var/lib/docker/

little docker ]#cd /var/lib/docker/
[root@little docker ]#ll
total 0
drwx–x–x 4 root root 120 Feb 20 14:48 buildkit
drwx-----x 2 root root 6 Feb 20 14:48 containers 容器信息
drwx------ 3 root root 22 Feb 20 14:48 image 镜像资源
drwxr-x— 3 root root 19 Feb 20 14:48 network
drwx-----x 3 root root 40 Feb 20 14:48 overlay2
drwx------ 4 root root 32 Feb 20 14:48 plugins
drwx------ 2 root root 6 Feb 20 14:48 runtimes
drwx------ 2 root root 6 Feb 20 14:48 swarm
drwx------ 2 root root 6 Feb 20 14:48 tmp
drwx------ 2 root root 6 Feb 20 14:48 trust
drwx-----x 2 root root 50 Feb 20 14:48 volumes

3、docker加速器:

国内使用docker官方镜像源,会因为网络原因无法下载,或一直处于超时状态。我们使用
daocloud.io的方法进行加速配置

[root@little ~ ]#curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://abcd1234.m.daocloud.io
docker version >= 1.12
{“registry-mirrors”: [“http://abcd1234.m.daocloud.io”]}
Success.
You need to restart docker to take effect: sudo systemctl restart docker

或者修改本地配置文件:
[root@little ~ ]#vim /etc/docker/daemon.json
{“registry-mirrors”: [“http://abcd1234.m.daocloud.io”]}

保存即可

验证拉取镜像速度:

docker image pull nginx

阿里云加速
[root@little ~ ]#vim /etc/docker/daemon.json
{“registry-mirrors”: [“https://q2gr04ke.mirror.aliyuns.com”],“insecure-registries”:[“10.1.1.100:5000”]}
~

docker 1.12 开始支持live restore,就是关闭docker daemon ,而不关闭容器

有两种方式开启:
如果docker daemon正在运行并且你不想停止它,你可以添加配置到docker daemon的配置文件。
例如:在linux系统上默认的配置文件是/etc/docker/daemon.json

{“live-restore”: true}

你必须传递一个SIGHUP信号给daemon进程来重载配置。更多有关使用config.json来配置docker daemon的信息,
可以参考
daemon configuration file
在使用dockerd启动时指定–live-restore选项文章来源地址https://www.toymoban.com/news/detail-777001.html

到了这里,关于K8S必备知识--docker的介绍以及安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(64)
  • 【云原生】k8s组件&架构介绍与K8s最新版部署

          个人主页: 征服bug-CSDN博客 kubernetes专栏: kubernetes_征服bug的博客-CSDN博客  目录 1 集群组件 1.1 控制平面组件(Control Plane Components) 1.2 Node 组件 1.3 插件 (Addons) 2 集群架构详细 3 集群搭建[重点] 3.1 minikube 3.2 裸机安装 集群组件 核心概念 集群安装 集群 cluster : 将同一个

    2024年02月14日
    浏览(34)
  • 云原生_kubernetes(k8s)介绍

    目录 一、应用部署方式演变 二、k8s介绍 三、k8s的组件 四、k8s中的概念 五、k8s资源管理方式 1、命令式对象管理 2、命令式对象配置 3、声明式对象配置 在部署应用程序的方式上,主要经历了三个时代: 1 、物理机部署: 互联网早期,会直接将应用程序部署在物理机上 优点

    2023年04月13日
    浏览(38)
  • 【云原生,k8s】Helm应用包管理器介绍

    目录 一、为什么需要Helm? (一)Helm介绍 (二)Helm有3个重要概念: (三)Helm特点 二、Helm V3变化 (一)架构变化 (二)自动创建名称空间 三、Helm应用包管理器部署 1、部署Helm客户端工具 2、Helm常用命令 3、配置国内的Chart仓库 4、使用chart部署一个Nginx应用 5、使用chart部

    2024年02月12日
    浏览(26)
  • docker在k8s容器中的作用,以及docker的底层原理,以及k8s的常用命令

        Docker的设计思想就是创建软件程序可移植性的轻量级容器,让其可以在任何安装了Docker的机器上,不用关心底层操作系统,就可以运行开发程序,就像集装箱一样使用。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们

    2024年04月27日
    浏览(42)
  • 【云原生】Kubeadmin安装k8s集群

    目录 前言: 一 环境部署 1.1 服务器部署功能 1.2 环境准备(所有节点) 二 安装docker(所有节点) 三 所有节点安装kubeadm,kubelet和kubectl 3.1 定义kubernetes源 3.2 开机自启kubelet 四 部署K8S集群 4.1 查看初始化需要的镜像 4.2 master节点上传压缩包 4.3 复制镜像和脚本到 node 节点

    2024年02月09日
    浏览(33)
  • 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装

    首先,K8s并不是一个传统意义上的 PaaS平台即服务的工具,它充分给使用者提供了很多很多选择的空间。 不限制支持的应用程序类型,K8s并不插手应用程序框架, 也不限制支持的语言 (如 Java, Python, Ruby 等),只要应用符合 12 因素即可。也就是说,只需要应用可以在容器中运行

    2024年02月03日
    浏览(55)
  • 【云原生-K8s】k8s可视化管理界面安装配置及比较【Kuboard篇】

    安装了k8s控制面板,方便日常的问题处理,查看资源状态信息,也可以增加子账号进行开放给其他人员使用,减少命令操作,提升工作效率 须有一个正常使用的k8s集群 附k8s v1.23版本搭建:https://blog.csdn.net/u010800804/article/details/124524688 快速落地 Kubernetes 官网:https://kuboard.cn/ 开

    2024年02月07日
    浏览(30)
  • 【云原生-K8s】k8s可视化管理界面安装配置及比较【Rancher篇】

    安装了k8s控制面板,方便日常的问题处理,查看资源状态信息,也可以增加子账号进行开放给其他人员使用,减少命令操作,提升工作效率 须有一个正常使用的k8s集群 附k8s v1.20版本搭建:https://blog.csdn.net/u010800804/article/details/124524688 企业级Kubernetes管理平台 Rancher为采用容器的

    2024年02月16日
    浏览(39)
  • 【云原生-K8s】k8s可视化管理界面安装配置及比较【Dashboard UI篇】

    Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。

    2024年02月13日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包