【Kubernetes 入门实战课】Day02——初识容器

news/2024/4/18 11:21:14/文章来源:https://blog.csdn.net/Victory_Lei/article/details/128629753

系列文章目录

【Kubernetes 入门实战课】Day01——搭建kubernetes实验环境(一)


文章目录

  • 系列文章目录
  • 前言
  • 一、Docker的诞生
  • 二、Docker的形态
    • 1、Docker Desktop
    • 2、Docker Engine
  • 二、Docker的安装
    • 1、服务器连接外网安装
    • 2、服务器不通外网
  • 三、Docker的使用
  • 三、Docker的架构
  • 总结


前言

俗话说:“万事开头难”,对于 Kubernetes 这个庞大而陌生的领域来说更是如此,如何迈出学习的第一步非常关键,所以,今天我们先从最简单、最基本的知识入手,聊聊最流行的容器技术 Docker,先搭建实验环境,再动手操作一下,进而破除它的神秘感。


一、Docker的诞生

2013 年 3 月 15 日,在北美的圣克拉拉市召开了一场 Python 开发者社区的主题会议 PyCon,研究和探讨各种 Python 开发技术和应用,与我们常说的“云”“PaaS”“SaaS”根本毫不相关。在当天的会议日程快结束时,有一个“闪电演讲”(lighting talk)的小环节。其中有一位开发者,用了 5 分钟的时间,做了题为 “The future of Linux Containers” 的演讲,不过临近末尾因为超时而被主持人赶下了台,场面略显尴尬。

PyCon2013 大会之后,许多人都意识到了容器的价值和重要性,发现它能够解决困扰了云厂商多年的打包、部署、管理、运维等问题,Docker 也就迅速流行起来,成为了 GitHub 上的明星项目。然后在几个月的时间里,Docker 更是吸引了 Amazon、Google、Red Hat 等大公司的关注,这些公司利用自身的技术背景,纷纷在容器概念上大做文章,最终成就了我们今天所看到的至尊王者 Kubernetes 的出现。

二、Docker的形态

目前使用 Docker 基本上有两个选择:Docker Desktop 和 Docker Engine。

1、Docker Desktop

①、专门针对 个人使用而设计的,支持Mac和Windows快速安装
②、具有直观的图形界面
③、集成了许多周边工作,方便易用
④、对个人学习免费,受条款限制不能商用

2、Docker Engine

①、完全免费
②、只能在Linux上运行,使用命令行操作,缺乏辅助工具
③、哥哥公司生产环境中实际使用的产品

因此接下来我们学习的就是 Docker Engine ,之后的Docker通常指的就是Docker Engine。

二、Docker的安装

我们已经在 Linux 虚拟机里安装了一些常用软件,用的是Centos中的包管理工具yum,所以,我们仍然可以使用同样的方式来安装Docker。

1、服务器连接外网安装

[root@bogon ~]# yum install -y docker

我们可以直接使用yum安装docker,前提是需要我们的虚拟机通外网。安装成功后,我们支持docker version命令会发现,提示Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?,因此需要启动docker

[root@bogon ~]# docker version
Client:Version:         1.13.1API version:     1.26Package version:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
#启动docker
[root@bogon ~]# systemctl start docker

Docker Engine 不像 Docker Desktop 那样可以安装后就直接使用,必须要做一些手工调整才能用起来,所以你还要在安装完毕后执行下面的两条命令:


[root@bogon ~]# systemctl start docker        #启动docker服务
[root@bogon ~]# sudo usermod -aG docker ${USER}   #当前用户加入docker组

需要将普通用户加入docker组中,才可以使用普通用户执行docker相关操作。值得注意的是,我们在实验环境是直接使用root操作的,在正式环境是不允许使用root用户进行系列操作的

现在我们就可以来验证 Docker 是否安装成功了,使用的命令是 docker version 和 docker info。

#docker version 会输出 Docker 客户端和服务器各自的版本信息
[root@bogon ~]# docker version
Client:Version:         1.13.1API version:     1.26Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64Go version:      go1.10.3Git commit:      7d71120/1.13.1Built:           Wed Mar  2 15:25:43 2022OS/Arch:         linux/amd64Server:Version:         1.13.1API version:     1.26 (minimum version 1.12)Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64Go version:      go1.10.3Git commit:      7d71120/1.13.1Built:           Wed Mar  2 15:25:43 2022OS/Arch:         linux/amd64Experimental:    false
#docker info 会显示当前 Docker 系统相关的信息,例如 CPU、内存、容器数量、镜像数量、容器运行时、存储文件系统
[root@bogon ~]# docker info
Containers: 0Running: 0Paused: 0Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins:Volume: localNetwork: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version:  (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 8891bca22c049cd2dcf13ba2438c0bac8d7f3343 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:seccompWARNING: You're not using the default seccomp profileProfile: /etc/docker/seccomp.jsonselinux
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 1
Total Memory: 3.685 GiB
Name: bogon
ID: 2ZNA:3YMR:P3LG:6SAO:ZZ5B:VVFC:N52V:RO3F:DT4C:SZEH:KXVS:4GO2
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)
[root@bogon ~]#

2、服务器不通外网

如果服务器不通外网,这会使得我们安装docker花费更多的时间,因此我们可以使用脚本一键安装。
一键安装Docker
执行安装脚本后,后续执行docker version和docker info,可以正常查看到当前docker的版本等信息。

三、Docker的使用

首先,我们使用命令 docker ps,它会列出当前系统里运行的容器,就像我们在 Linux 系统里使用 ps 命令列出运行的进程一样。
在这里插入图片描述
因为我们刚刚安装好 Docker 环境,这个时候还没有运行任何容器,所以列表显然是空的

注意,所有的 Docker 操作都是这种形式:以 docker 开始,然后是一个具体的子命令,之前的 docker version 和 docker info 也遵循了这样的规则。你还可以用 help 或者 --help 来获取帮助信息,查看命令清单和更详细的说明。
在这里插入图片描述
接下来,让我们尝试另一个非常重要的命令 docker pull ,从外部的镜像仓库(Registry)拉取一个 busybox 镜像(image),你可以把它类比成是Centos里的“yum install”下载软件包:

[root@bogon ~]# docker pull busybox
Using default tag: latest
Trying to pull repository docker.io/library/busybox ...
latest: Pulling from docker.io/library/busybox
205dae5015e7: Pull complete
Digest: sha256:7b3ccabffc97de872a30dfd234fd972a66d247c8cfc69b0550f276481852627c
Status: Downloaded newer image for docker.io/busybox:latest

在这里插入图片描述
我们再执行命令 docker images ,它会列出当前 Docker 所存储的所有镜像:
在这里插入图片描述

[root@bogon ~]# docker images
#镜像仓库			tag id信息			镜像id				创建时间				镜像大小
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/busybox   latest              66ba00ad3de8        6 days ago          4.87 MB

这条命令会在我们的终端上,输出计算机世界最著名的语句“hello world”:

[root@bogon ~]# docker run busybox echo hello world
hello world

然后我们再用 docker ps 命令,加上一个参数 -a ,就可以看到这个已经运行完毕的容器:
在这里插入图片描述

三、Docker的架构

Docker Engine 的架构,精准地描述了 Docker Engine 的内部角色和工作流程:
在这里插入图片描述
刚才我们敲的命令行 docker 实际上是一个客户端 client ,它会与 Docker Engine 里的后台服务 Docker daemon 通信,而镜像则存储在远端的仓库 Registry 里,客户端并不能直接访问镜像仓库。

Docker client 可以通过 build、pull、run等命令向 Docker daemon 发送请求,而 Docker daemon 则是容器和镜像的“大管家”,负责从远端拉取镜像、在本地存储镜像,还有从镜像生成容器、管理容器等所有功能。

所以,在 Docker Engine 里,真正干活的其实是默默运行在后台的 Docker daemon,而我们实际操作的命令行工具“docker”只是个“传声筒”的角色。

总结

Docker Engine 是典型的客户端 / 服务器(C/S)架构,命令行工具 Docker 直接面对用户,后面的 Docker daemon 和 Registry 协作完成各种功能。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云物联网平台设备模拟器

在使用阿里云物联网平台过程中,如果开始调试没有实际的物理设备,可以考虑在阿里云物联网平台使用官方自带的模拟器进行调试。不过也可以通过叶帆科技开发的阿里云物联网平台设备模拟器AliIoTSimulator进行调试,AliIoTSimulator可以独立运行&a…

stm32 VM8978 音乐播放

一、WAV文件 1、WAV文件简介 2、WAV文件的解析 二、WM8978 1、WM8978介绍 2、WM8978特点 3、WM8978接口 4、WM8978框架 5、 WM8978 寄存器 三、IIS详解 1、IIS介绍 2、 IIS 的特点 3、IIS框架 4、 音频协议 5、 IIS Philips 标准 6、 IIS 时钟 四、音乐播放硬件…

ChatGPT三个关键技术

情景学习(In-context learning) 对于一些LLM没有见过的新任务,只需要设计一些任务的语言描述,并给出几个任务实例,作为模型的输入,即可让模型从给定的情景中学习新任务并给出满意的回答结果。这种训练方式能…

双检测人脸防伪识别方法(活体检测+人脸识别+关键点检测+人像分割)

双检测人脸防伪识别=人脸检测+活体检测+人脸识别 1.人脸关键点+语义分割 使用mediapipe进行视频人脸关键点检测和人像分割: import time import cv2 import mediapipe as mp import numpy as npmp_drawing = mp.solutions.drawing_utils mp_drawing_styles = mp.solution…

量化交易-单因子分析-alphalens

1. 数据准备 1.1 计算因子IC重要函数 def get_clean_factor_and_forward_returns(factor,prices,groupbyNone,binning_by_groupFalse,quantiles5,binsNone,periods(1, 5, 10),filter_zscore20,groupby_labelsNone,max_loss0.35,zero_awareFalse,cumulative_returnsTrue)facto…

【C语言】-程序编译的环境和预处理详解-让你轻松理解程序是怎么运行的!!

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 程序的编译前言一、 程序的翻译环境和执行环境二、 详解翻译环境2.1编译环境2.1.1预编…

民锋国际期货:2023,既艰难又充满希望,既纷乱又有无数机会。

不管是官方还是民间,各种信号都表明,2023年是一个拼经济的年份。 通货膨胀带来的需求量的增加,与中国经济高速发展带来的供给量增加,二者共同构成了我们的物价。 做一个长期主义者,做一个坚定看好中国未来的人&#…

MapBox动态气泡图渲染教程

先来看效果: 视频效果: 屏幕录制2023-02-22 15.34.57 首先我们来介绍一下思路。对于mapbox和openlayers这样的框架来讲,气泡图中的气泡本质上就是一个div,就是将一个dom元素追加到canvas上的固定位置而已。 在mapbox中有marker的概念,官网也有示例: Attach a popup to …

二叉树——路径总和

路径总和 链接 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点…

数据库及缓存之MySQL(一)

思维导图 常见知识点 1.mysql存储引擎: 2.innodb与myisam区别: 3.表设计字段选择: 4.mysql的varchar(M)最多存储数据: 5.事务基本特性: 6.事务并发引发问题: 7.mysql索引: 8.三星索引&#xf…

升职加薪必备,2023年程序员不能不知道的AI辅助编码工具

已经有很多人把chatGPT当做必备的Bug修复工具了,对于用AI写代码,有人感到失落,害怕被取代,而另一些人则认为人工智能将加快编写更好代码的过程。 尽管 AI 编写的代码并非完美无缺,但我相信,最终AI将取代人…

车机开发—【CarService启动流程】

汽车架构:车载HAL是汽车与车辆网络服务之间的接口定义(同时保护传入的数据): 车载HAL与Android Automotive架构: Car App:包括OEM和第三方开发的AppCar API:内有包含CarSensorManager在内的AP…

Hadoop集群模式安装(Cluster mode)

1、Hadoop源码编译 安装包、源码包下载地址 Index of /dist/hadoop/common/hadoop-3.3.0为什么要重新编译Hadoop源码? 匹配不同操作系统本地库环境,Hadoop某些操作比如压缩、IO需要调用系统本地库(*.so|*.dll) 修改源码、重构源码 如何…

H12-831题库(有详细的解析)

1.(单选)某工程师利用2台路由器进行IPv6业务测试,通过运行BGP4模拟总部与分支的互联互通。如图所示,某工程师抓包查看R1发出的update报文。关于该报文信息的描述,以下哪个说法是正确的? A.该报文描述的路由的下一跳地址为:2001:db8::2345:1::1 B.该报文…

自动增长配置不合理导致的性能抖动

背景客户收到了SQL专家云告警邮件,在凌晨2点到3点之间带有资源等待的会话数暴增,请我们协助分析。现象登录SQL专家云,进入活动会话的趋势分析页面,下钻到2点钟一个小时内的数据,看到每分钟的等待数都在100左右&#xf…

关于upstream的八种回调方法

1 creat_request调用背景:用于创建自己模板与第三方服务器的第一次连接步骤1) 在Nginx主循环(ngx_worker_process_cycle方法) 中,会定期地调用事件模块, 以检查是否有网络事件发生。2) 事件模块…

人员行为识别系统 TensorFlow

人员行为识别系统人员行为识别系统通过TensorFlow深度学习技术,人员行为识别算法对画面中区域人员不按要求穿戴、违规抽烟打电话、睡岗离岗以及作业流程不规范实时分析预警,发现违规行为立即抓拍告警。深度学习应用到实际问题中,一个非常棘手…

快速读懂网络拓扑图

快速读懂网络拓扑图几重常见的网络拓扑总线型拓扑简介优点缺点环型拓扑简介优点缺点星型拓扑简介优点缺点网络层级机构节点结点链路通路不同的连接线代表什么意思?不同颜色、粗细的直线代表什么意思?闪电线-串行链路几重常见的网络拓扑 总线型拓扑 简介…

浅谈volatile关键字

文章目录1.保证内存可见性2.可见性验证3.原子性验证4.原子性问题解决5.禁止指令重排序6.JMM谈谈你的理解6.1.基本概念6.2.JMM同步规定6.2.1.可见性6.2.2.原子性6.2.3.有序性6.3.Volatile针对指令重排做了啥7.你在哪些地方用过Volatile?volatile是Java提供的轻量级的…

【华为OD机试模拟题】用 C++ 实现 - 求字符串中所有整数的最小和

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…