Docker容器技术

在这里插入图片描述
前言

容器技术、虚拟化技术已经成为一种被大家广泛认可的服务器资源共享方式,容器技术可以在按需构建操作系统实例的过程当中为系统管理员提供极大的灵活性。由于hypervisor虚拟化技术仍然存在一些性能和资源使用效率方面的问题,因此容器技术(Container)结合虚拟化技术的解决方案正在我们的业务使用中高频使用。

在这里插入图片描述
容器的集装箱概念是参照了航运中的集装箱概念,在航运中不关心你运输的是汽车还是棉花,它都通过集装箱将运输的流程规范成了标准化的操作,这里容器的使命也是一样,容器具备自包含的能力,将自身程序所依赖的程序全部包含在了容器中,通过Docker将底层环境打平,用户可以将一个容器镜像运行在任何操作系统的宿主机上,也就是Docker所说的“Build once, Run anywhere”。

在这里插入图片描述

容器它的优势有以下几点:🍉

  1. 不再依赖于独立的操作系统运行,相比较虚拟机它没有每个独立的操作系统,突破了宿主机的磁盘IO性能,减少了资源使用的浪费。

  2. 容器时应用程序层的抽象,对于运维和开发来说,容器只关心中间件之上的应用,中间件与宿主机的操作系统之间的问题都交给了Docker来处理。

  3. 它是自包含程序依赖,这也是它成为云原生应用基石的重要因素,有兴趣的同学可以查询云原生应用12要素进行学习。

由于容器的优势使得我们在底层资源使用上资源使用率近一步提高,通过过往资源使用率的统计,原有云主机部署服务底层资源使用率只有1020%,在容器技术加入以后,这一数值也提高到了4050%

Docker的核心概念
这里值得一提的是,Docker作为容器化软件的一种,是社区使用率最高的容器引擎,但Docker并不等于容器,容器引擎有很多种,例如rkt和近期社区火热的kata。

Docker的核心概念有以下3点🍉

  1. 镜像(image)

  2. 容器(Container)

  3. 仓库(Registry)

在这里插入图片描述
Docker的整个运行逻辑如这个图所示,通过Docker Client将需要执行的Docker命令发送给Docker运行的节点上的Docker daemon,Docker daemon将我们的请求进行分解执行,例如我们执行Docker build命令它会根据Dockerfile构建一个镜像存放于本地,执行Docker pull命令会从远端的容器镜像仓库拉取镜像到本地,执行Docker run命令会将容器镜像拉取并运行成为容器实例。

这里我们从容器镜像开始讲解。

了解容器镜像先要了解linux系统的基础知识,典型的linux启动到运行需要2个FS,一个是rootfs,一个是bootfs。

bootfs是linux启动时进行加载的,会安装系统所使用的kernel内核,创建完成后bootfs会进行解绑。

rootfs是我们真正去使用linux是操作的系统文件系统,包含/dev /bin等目录,对于我们构建容器镜像来说,我们利用rootfs作为我们的基础镜像来使用,一个精简的os来说,它的rootfs可以很小,只需要包括基本的命令和工具即可,例如alpine只有不到10MB。

镜像构建基于一个基础镜像将我们需要进行安装的依赖和程序根据Dockerfile编写逐层叠加到镜像中,这里涉及到了一个容器镜像的概念就是,镜像分层,镜像的每一层都会有一个独立的id,Docker使用Union FS对Docker镜像进行分层和合层记录,当我们使用同一个基础镜像时,利用Docker镜像分层的功能可以帮助我们使用到已有的镜像层,拉取没有的镜像层,达到镜像的资源共享,减少重复镜像层拉取,达到资源使用最大化。

容器运行时会在容器镜像最上层生成一个Container层,这个层是copy这个完整的镜像加载到内存中运行,在这个层级中对于容器来说是可以进行修改的,但是由于运行于内存中,我们对Container层的任何修改都不会对底层镜像生效,当容器消亡时我们修改的数据也一并消亡,这就是容器的copy on write特性。

安装Docker🍉

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,本课程基于CentOS7安装Docker。官网: https://www.docker.com

# 1、yum包更新到最新
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源--指定你下载docker软件的网址
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y---下载并安装docker-ce[社区版] docker-ee[企业版]
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v

配置Docker镜像加速器🍉

默认情况下,将来从docker hub (https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器:

USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)

阿里云
网易云

腾讯云

在这里我使用的是阿里云
在这里插入图片描述
在这里插入图片描述
把上面选中的代码复制—在centos中直接执行就行了。
在这里插入图片描述

docker使用🍉

docker服务的命令🥝

停止docker服务: systemctl stop docker

启动docker服务: systemctl start docker

重启docker服务: systemctl restart docker

开机启动docker服务: systemctl enable docker

镜像的命令🥝

  1. 从仓库中搜索相关的镜像:
docker search 镜像名
例如: docker search mysql

在这里插入图片描述
2. 拉取镜像到本地

docker pull 镜像名:版本号 ===如果没有跟版本号,那么它会拉取最新的latest

3.查看本地有哪些镜像:

docker images

4.删除本地指定的镜像

docker rmi 镜像名:版本号 或镜像编号
删除所有的镜像: docker rmi $(docker images -q) [慎用]

5.帮助命令

docker --help [找到所有的docker命令]

docker 命令 --help [命令的语法]

容器的命令🥝

运行centos容器:并进入到容器内

docker run -it --name=c1 centos:7 /bin/bash
--------------------------------------------------------
-i:进入容器内部
-t:交互平台 ===它几乎和-i一起使用。
--name: 为容器起个名称--如果没有使用--name那么docker为自动分配一个名字
centos:7===镜像名:版本号
/bin/bash===提供一个shell命令窗口

退出容器:

exit: ---会关闭容器
ctrl+q+p:--退出不会关闭容器:

查看当前的容器:

docker ps:  查看所有正在运行的容器
docker ps -a:查看所有的容器。
docker ps -aq: 查看所有容器的id

创建一个容器不进入到该容器内部

docker run -id --name=容器的名称  centos:7 /bin/bash

进入指定的容器内部:—使用exit不会关闭容器。

docker exec 容器的id或者容器的名称  /bin/bash

关闭|启动|删除容器:

docker stop 容器名|容器id
docker start 容器名|容器id
docker rm 容器名|容器id  [只能删除停止的容器]
docker rm -f 容器名|容器id [强制删除容器]
docker rm -f $(docker ps -aq): 删除所有容器

在这里插入图片描述

数据卷🥝

在这里插入图片描述
window系统是否可以直接把文件复制到容器中:----不能–但是可以间接复制过去

在这里插入图片描述
为了保证容器数据的可靠性,----需要把容器内部的某个目录–挂载到宿主机中的某个目录中。==

宿主机中的这个目录就是数据卷

在这里插入图片描述

如何配置数据卷–volume

在这里插入图片描述

例子:

 docker run -id --name=c2 -v /usr/app:/usr/ykq -v /usr/app2:/usr/ykq2 centos:7 /bin/bash

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

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

相关文章

Python爬虫遇到重定向问题解决办法汇总

在进行Python爬虫任务时,遇到重定向问题是常见的问题之一。重定向是指在发送请求时,服务器会返回一个新的URL,将请求重新定向到该URL。为了帮助您解决这个问题,本文将提供一些实用的解决办法,并给出相关的代码示例&…

【H5移动端】常用的移动端方案合集-键盘呼起、全面屏适配、图片大小显示、300ms点击延迟、首屏优化(不定期补充~)

文章目录 前言键盘呼起问题靠近底部的输入项被键盘遮挡底部按钮被顶上去 全面屏适配图片大小显示问题解决300ms延迟首屏优化 前言 这篇文章总结了我在工作中做H5遇到的一些问题,包括我是怎么解决的。可能不是当下的最优解,但是能保证解决问题。 单位适…

五、JVM-垃圾回收算法

常见的回收算法:标记清除算法、复制算法、标记-整理算法、分代收集算法 1、标记清除算法 第一步:标记(找出内存中需要回收的对象,并且把它们标记出来) 第二步:清除 (清除掉被标记需要回收的对…

【Redis】——RDB快照

Redis 是内存数据库,但是它为数据的持久化提供了两个技术,一个是AOF日志,另一个是RDB快照: AOF 文件的内容是操作命令;RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存数据,记录的是实际…

Linux 命令学习:

1. vim 使用: 一般流程就是: vi XXXX文件路径 //进入文件,此时处在命令模式(即,vim认为我们现在键盘输入的不是字符,而是命令) i // 键盘输入 i 字符,进入输入模式&#xff…

【C语言】静态关键字static的用法(详解)

🎈个人主页:库库的里昂 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:C语言初阶 ✨其他专栏:代码小游戏 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论…

Python导出SqlServerl数据字典为excel

sql代码 SELECTtableName D.name ,tableIntroduce isnull(F.value, ),sort A.colorder,fieldName A.name,catogary B.name,bytes A.Length,lengths COLUMNPROPERTY(A.id, A.name, PRECISION),scales isnull(COLUMNPROPERTY(A.id, A.name, Scale), 0),isOrNotNull Cas…

Spring Cloud +UniApp 智慧工地云平台源码,智能监控和AI分析系统,危大工程管理、视频监控管理、项目人员管理、绿色施工管理

一套智慧工地云平台源码,PC管理端APP端平板端可视化数据大屏端源码 智慧工地可视化系统利用物联网、人工智能、云计算、大数据、移动互联网等新一代信息技术,通过工地中台、三维建模服务、视频AI分析服务等技术支撑,实现智慧工地高精度动态仿…

【css】css隐藏元素

display:none&#xff1a;可以隐藏元素。该元素将被隐藏&#xff0c;并且页面将显示为好像该元素不在其中。visibility:hidden&#xff1a; 可以隐藏元素。但是&#xff0c;该元素仍将占用与之前相同的空间。元素将被隐藏&#xff0c;但仍会影响布局。 代码&#xff1a; <!…

一次redis缓存不均衡优化经验

背景 高并发接口&#xff0c;引入redis作为缓存之后&#xff0c;运行一段时间发现redis各个节点在高峰时段的访问量严重不均衡&#xff0c;有的节点访问量7000次/s&#xff0c;有的节点访问量500次/s 此种现象虽然暂时不影响系统使用&#xff0c;但是始终是个安全隐患&#x…

谈谈python编程语言

目录 1.什么是python 2.python的发展历史 3.python的具体应用领域 4.就业前景 1.什么是python Python是一种高级编程语言&#xff0c;它具有简单易学、可读性强和功能丰富的特点。Python由Guido van Rossum于1991年开发&#xff0c;并成为一种通用的编程语言。 以下是一些Py…

Mac 创建和删除 Automator 工作流程,设置 Terminal 快捷键

1. 创建 Automator 流程 本文以创建一个快捷键启动 Terminal 的自动操作为示例。 点击打开 自动操作&#xff1b; 点击 新建文稿 点击 快速操作 选择 运行 AppleScript 填入以下内容 保存名为 “Open Terminal” 打开 设置 > 键盘&#xff0c;选择 键盘快捷键 以此选择 服…

Agent:OpenAI的下一步,亚马逊云科技站在第5层

什么是Agent&#xff1f;在大模型语境下&#xff0c;可以理解成能自主理解、规划、执行复杂任务的系统。Agent也将成为新的起点&#xff0c;成为各行各业构建新一代AI应用必不可少的组成部分。 对此&#xff0c;初创公司Seednapse AI创始人提出构建AI应用的五层基石理论&#…

java字符串超详解

目录 1. API 1.1 API 概述 2. String 2.1 String概述 2.2 String 构造方法 2.3 String对象的特点 2.4 字符串的比较 2.5 String中的方法 3. StringBuilder 3.1 StringBuilder 概述 3.2 StringBuilder 的构造方法 3.3 StringBuilder 的添加和反转 3.4 StringBuilder…

Kill OOM

1、什么是OOM&#xff1f; OOM是每个程序员早晚都必须面对的问题&#xff0c;通常情况下&#xff0c;Java程序员所说的OOM是JVM OOM,即java.lang.OutOfMemoryError&#xff0c;是指Java程序在运行时申请内存超过JVM可用内存限制&#xff0c;导致JVM无法继续分配内存&#xff0…

小红书2023“家生活”趋势白皮书

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 近年来&#xff0c;年轻人与家的关系愈发紧密。 在小红书上&#xff0c;我们观察到了家居家装内容的蓬勃生长&#xff0c;3 年来相关内容的笔记规模增长了6倍&#xff0c;相关品类的搜索量增加的 3.…

【JavaEE初阶】了解JVM

文章目录 一. JVM内存区域划分二. JVM类加载机制2.1 类加载整体流程2.2 类加载的时机2.3 双亲委派模型(经典) 三. JVM垃圾回收机制(GC)3.1 GC实际工作过程3.1.1 找到垃圾/判定垃圾1. 引用计数(不是java的做法,Python/PHP)2. 可达性分析(Java的做法) 3.1.2 清理垃圾1. 标记清除2…

自学(黑客)技术,入门到入狱!

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟入…

@ControllerAdvice注解使用及原理探究 | 京东物流技术团队

最近在新项目的开发过程中&#xff0c;遇到了个问题&#xff0c;需要将一些异常的业务流程返回给前端&#xff0c;需要提供给前端不同的响应码&#xff0c;前端再在次基础上做提示语言的国际化适配。这些异常流程涉及业务层和控制层的各个地方&#xff0c;如果每个地方都写一些…

Typescript中的元组与数组的区别

Typescript中的元组与数组的区别 元组可以应用在经纬度这样明确固定长度和类型的场景下 //元组和数组类似&#xff0c;但是类型注解时会不一样//元组赋值的类型、位置、个数需要和定义的类型、位置、个数完全一致&#xff0c;不然会报错。 // 数组 某个位置的值可以是注解中的…