Docker详解及使用

news2024/11/24 19:59:42

文章目录

    • 为什么要用docker
    • 为什么会出现容器
    • Docker 是什么
    • 容器是什么
    • 虚拟化是什么
    • Docker 和 虚拟化的区别
    • Docker 容器有几种在状态
    • 什么是仓库
    • 什么是镜像
    • 什么是容器
    • 仓库、镜像、容器的关系
    • 常用的 Docker 命令
    • 如何把主机的东西拷贝到容器内部
    • 如何让容器随着 Docker 服务启动而自动启动
    • 如何指定容器的端口映射
    • 如何查看官方镜像服务的默认端口是什么
    • 如何修改容器的端口映射
    • 如何指定容器的目录映射
    • 如何修改容器的目录映射
    • 同⼀个宿主机中多个Docker容器之间如何通信?多个宿主机中Docker容器之间如何通信

为什么要用docker

使用 Docker 可以提高开发效率、简化部署流程、提高资源利用率,并且有利于构建现代化的应用架构。因此,许多组织和开发团队选择使用 Docker 来构建、交付和运行他们的应用程序。
使用 Docker 可以为开发人员、运维团队和企业带来多方面的好处:

  1. 跨平台一致性: Docker 容器提供了一种轻量级、可移植的环境,使得应用程序可以在不同的平台上以一致的方式运行。开发人员可以在其本地开发环境中构建和测试容器,然后将其部署到生产环境中,而无需担心环境的差异性导致的兼容性问题。
  2. 快速部署: Docker 容器可以快速启动和停止,几乎没有启动延迟,因此可以大大缩短应用程序的部署时间。开发人员和运维团队可以更快地将新版本的应用程序部署到生产环境中,从而提高交付速度和敏捷性
    一条命令即可将容器启动,而容器启动时一般会将服务或应用一并启动
  3. 资源利用率高: Docker 容器共享主机操作系统的内核,并且可以在同一台主机上运行多个容器,因此可以更有效地利用服务器资源。与传统的虚拟化技术相比,Docker 容器更加轻量级,启动和停止更快,并且更加节省资源。
  4. 环境隔离: 每个 Docker 容器都是独立的、互相隔离的,因此可以避免容器之间的相互干扰和冲突。这使得开发人员可以在同一台主机上运行多个应用程序,而无需担心应用程序之间的依赖关系和冲突。
  5. 持续集成和持续部署(CI/CD): Docker 容器可以与持续集成和持续部署工具(如 Jenkins、GitLab CI 等)集成,从而实现自动化的构建、测试、部署和监控流程。这可以大大提高交付速度和质量,并且降低人为错误的风险。
  6. 微服务架构: Docker 容器可以作为微服务架构的基础,每个容器可以包含一个独立的服务或功能模块。通过将应用程序拆分为多个小型、松耦合的容器,可以实现更灵活、可扩展和可维护的应用程序架构。
  7. 版本控制和协作:Docker 镜像可以存储在仓库中,并且支持版本控制,使得团队成员可以轻松地共享和协作。每个镜像都有唯一的标识符,确保了镜像的版本管理。
  8. 灵活性:Docker 提供了对各种不同类型的应用和服务的支持,可以轻松构建、部署和扩展各种类型的应用程序,从传统的 Web 应用到分布式微服务架构。
  9. 生态系统:Docker 生态系统非常庞大,有大量的官方和社区维护的镜像和工具,可以大大简化开发和部署过程。

为什么会出现容器

为了解决单机部署应用和虚拟化的局限性而诞生

Docker 是什么

是实现容器技术的一种工具
是一个开源的应用容器引擎
使用 C/S 架构模式,通过远程API 来管理
可以打包一个应用及依赖包到一个轻量级、可移植的容器中

容器是什么

对应用软件和依赖包进行标准打包
应用或服务之间相互隔离,但又共享一个 OS
可以打包运行在不同的系统上

虚拟化是什么

可以理解成虚拟机技术
一个主机可以部署多个虚拟机,每个虚拟机又可以部署多个应用
对于主机来说,虚拟机就是一个普通文件
虚拟化的缺点是什么
● 资源占用多:每个虚拟机都是完整的操作系统,需要给它分配大量系统资源
● 冗余步骤多:一个完整的操作系统,一些系统级别的步骤无法避免,比如用户登录
● 启动慢:启动操作系统需要多久,启动虚拟机就要多久

Docker 和 虚拟化的区别

虚拟机:我们传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有⾃⼰的操作系统,虚拟机⼀旦被开启,预分配给他
的资源将全部被占⽤。,每⼀个虚拟机包括应⽤,必要的⼆进制和库,以及⼀个完整的⽤户操作系统。
Docker:容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。
容器包含应⽤和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在⽤户空间以分离的进程运⾏。
在这里插入图片描述

  1. docker启动快速属于秒级别。虚拟机通常需要⼏分钟去启动。
  2. docker需要的资源更少,docker在操作系统级别进⾏虚拟化,docker容器和内核交互,⼏乎没有性能损耗,性能优于通过Hypervisor层与内核层的虚拟化。;
  3. docker更轻量,docker的架构可以共⽤⼀个内核与共享应⽤程序库,所占内存极⼩。同样的硬件环境,Docker运⾏的镜像数远多于虚拟机数量。对系统的利⽤率⾮常⾼
  4. 与虚拟机相⽐,docker隔离性更弱,docker属于进程之间的隔离,虚拟机可实现系统级别隔离;
  5. 安全性: docker的安全性也更弱。Docker的租户root和宿主机root等同,⼀旦容器内的⽤户从普通⽤户权限提升为root权限,它就直接具备了宿主机的root权限,进⽽可进⾏⽆限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机
    利⽤如Intel的VT-d和VT-x的ring-1硬件隔离技术,这种隔离技术可以防⽌虚拟机突破和彼此交互,⽽容器⾄今还没有任何形式的硬件隔离,这使得容器容易受到攻击。
  6. 可管理性:docker的集中化管理⼯具还不算成熟。各种虚拟化技术都有成熟的管理⼯具,例如VMware vCenter提供完备的虚拟机管理能⼒。
  7. ⾼可⽤和可恢复性:docker对业务的⾼可⽤⽀持是通过快速重新部署实现的。虚拟化具备负载均衡,⾼可⽤,容错,迁移和数据保护等经过⽣产实践检验的成熟保障机制,VMware可承诺虚拟机99.999%⾼可⽤,保证业务连续性。
  8. 快速创建、删除:虚拟化创建是分钟级别的,Docker容器创建是秒级别的,Docker的快速迭代性,决定了⽆论是开发、测试、部署都可以节约⼤量时间。
  9. 交付、部署:虚拟机可以通过镜像实现环境交付的⼀致性,但镜像分发⽆法体系化;Docker在Dockerfile中记录了容器构建过程,可在集群中实现快速分发和快速部署;

Docker 容器有几种在状态

starting 运行状态
Exited 退出状态
Paused 暂停状态
healthy 健康状态
unhealthy 非健康状态

什么是仓库

存放镜像文件的地方,比如 DockerHub,可以将自己的镜像上传上去
不同镜像可以有不同的标签
主机可以从仓库下载镜像

什么是镜像

创建容器的模板
同一个镜像可以创建多个不同的容器

什么是容器

通过镜像生成的运行实例
不同容器之间是相互隔离,独立运行的
通常一个容器就是一个应用或一个服务,也是我们常说的微服务

仓库、镜像、容器的关系

仓库存放镜像,主机通过仓库下载镜像,通过镜像创建容器

常用的 Docker 命令

docker pull 拉取镜像
docker create 创建容器
docker rm 删除容器
docker ps 列出正在运行的容器列表
docker ps -a 查看所有容器,包括停止的
docker run 创建容器并运行指定命令
docker start 启动容器
docker stop 停止运行容器
docker restart 重启容器
docker rm 删除容器
docker exec 容器执行指定命令
docker rmi 删除镜像
停止和重启容器:
停止容器:docker stop ContainerID(镜像运行的id号)
重启容器:docker restart ContainerID
启动容器:docker start ContainerID
移出容器:docker rm ContainerID
强制停止:docker kill ContainerID
帮助命令
docker version
docker info
docker --help

如何把主机的东西拷贝到容器内部

通过 docker cp 命令即可,还能把容器内部内容拷贝到主机
进入容器的方法有哪些
通过 docker exec 进入容器内部

如何让容器随着 Docker 服务启动而自动启动

创建容器时,加上 --restart=always 参数
创建容器后,通过修改容器配置文件的 RestartPolicy 参数值
创建容器后,使用 docker update 命令更新容器的 --restart 参数值

如何指定容器的端口映射

创建容器时,通过 -p 来指定端口映射
创建容器后,通过修改容器的配置文件来指定端口映射

如何查看官方镜像服务的默认端口是什么

可以通过 docker inspect 查看镜像信息,然后找到端口映射一栏
也可以先用该镜像创建一个容器并运行,通过 docker ps 查看运行端口是什么

如何修改容器的端口映射

删除容器,重新创建容器,并指定端口映射
通过容器配置文件修改端口映射
通过 docker commit 将容器构建为一个全新的镜像,然后再通过该镜像创建新的容器,并指定端口映射

如何指定容器的目录映射

创建容器时,通过 -v 来指定目录映射
创建容器后,通过修改容器的配置文件来指定目录映射

如何修改容器的目录映射

删除容器,重新创建容器,并指定目录映射
通过容器配置文件修改目录映射
通过 docker commit 将容器构建为一个全新的镜像,然后再通过该镜像创建新的容器,并指定目录映射

同⼀个宿主机中多个Docker容器之间如何通信?多个宿主机中Docker容器之间如何通信

这⾥同主机不同容器之间通信主要使⽤Docker桥接(Bridge)模式。
不同主机的容器之间的通信可以借助于 pipework 这个⼯具。

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

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

相关文章

八、右侧下部页面内容区域

内容区可直接放置router-view占位子路由展示位置 所有内容区路由是layout的子路由,子路由需要在父路由中使用router-view占位才能显示app.vue是所有其他组件的父view/router,router里的父子关系通过来展现。所以在app.vue也要router-view标签 也可拆成组…

⭐北邮复试刷题LCR 012. 寻找数组的中心下标__前缀和思想 (力扣119经典题变种挑战)

LCR 012. 寻找数组的中心下标 给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为…

SpringMVC 的参数绑定之list集合、Map

标签中name属性的值就是pojo类的属性名 参数绑定4 list [对象] <form action"teaupd.do" method"post"> <c:forEach items"${list}" var"tea" varStatus "status"> 教师编号&#xff1a;<input…

【SV的面向对象 SV的类_2024.01.02】

OOP术语 OOP&#xff1a;object oriented programming Class类&#xff1a;包含变量和子程序的基本构建块 Object对象&#xff1a;类的一个实例 Handle句柄&#xff1a;指向对象的指针 Property属性&#xff1a;存储数据的变量&#xff1b;在V中&#xff0c;可以是wire或reg类…

⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)

LCR 034. 验证外星语词典 某种外星语也使用英文小写字母&#xff0c;但可能顺序 order 不同。字母表的顺序&#xff08;order&#xff09;是一些小写字母的排列。 给定一组用外星语书写的单词 words&#xff0c;以及其字母表的顺序 order&#xff0c;只有当给定的单词在这种外…

莱卡云怎么样?简单测评下莱卡云韩国CN2云服务器

莱卡云服务器厂商&#xff0c;国内持证企业服务器商家&#xff0c;运作着香港、美国、韩国、镇江、日本、绍兴、枣庄、等数据中心的云服务器、独立服务器出租、设备托管、CDN等业务。今天为大家带来的是莱卡云韩国CN2服务器的详细评测&#xff0c;该云服务器的数据中心位于韩国…

大语言模型学习路线:从入门到实战

大语言模型学习路线&#xff1a;从入门到实战 在人工智能领域&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;正迅速成为一个热点话题。 本学习路线旨在为有基本Python编程和深度学习基础的学习者提供一个清晰、系统的大模型学习指南&#xff0c;…

阿里云服务器“镜像”全方面解析

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

辽宁博学优晨教育科技有限公司视频剪辑培训靠谱吗?

在数字媒体日益繁荣的今天&#xff0c;视频剪辑已成为一项炙手可热的技能。不少培训机构纷纷涉足这一领域&#xff0c;辽宁博学优晨教育科技有限公司便是其中之一。然而&#xff0c;面对众多的选择&#xff0c;很多人不禁要问&#xff1a;辽宁博学优晨教育科技有限公司的视频剪…

【二十八】springboot整合logback实现日志管理

本章节是记录logback在springboot项目中的简单使用&#xff0c;本文将会演示如何通过logback将日志记录到日志文件或输出到控制台等管理操作。将会从以下几个方面进行讲解。最后实现将特定级别的特定日志保存到日志文件。 一、依赖 <dependency><groupId>ch.qos.l…

unity学习(26)——客户端与服务器合力完成注册功能(8)json编解码问题,大结局

服务器端发送的内容如下&#xff1a; 客户端所接受的内容如下&#xff1a; 是一样的&#xff0c;不是传输问题&#xff0c;少了一个解码的过程&#xff0c;之前那个addMessage函数应该是不能解码的&#xff01; 具体解析一下数据包的内容&#xff1a;上边的是成功的&#xff0…

[杂记]mmdetection3.x中的数据流与基本流程详解(数据集读取, 数据增强, 训练)

之前跑了一下mmdetection 3.x自带的一些算法, 但是具体的代码细节总是看了就忘, 所以想做一些笔记, 方便初学者参考. 其实比较不能忍的是, 官网的文档还是空的… 这次想写其中的数据流是如何运作的, 包括从读取数据集的样本与真值, 到数据增强, 再到模型的forward当中. 0. MMDe…

线性规划单纯形法原理及实现

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 本期话题&#xff1a;线性规划单纯形法原理及实现 标准化及单纯形方法 相关学习资料 https://www.bilibili.com/video/BV168411j7XL/?spm_id_from333.788&vd_so…

用于将Grafana默认数据库sqlite3迁移到MySQL数据库

以下是一个方案&#xff0c;用于将Grafana数据迁移到MySQL数据库。 背景: grafana 默认采用的是sqlite3&#xff0c;当我们要以集群形式部署的时使用mysql较为方便&#xff0c;试了很多sqlite转mysql的方法要么收费,最后放弃。选择自己动手风衣足食。 目标: 迁移sqlite3切换…

【深圳游戏业:腾讯引领小型公司创新求发展】

深圳游戏业&#xff1a; 腾讯引领小型公司创新求发展 一 深圳游戏公司主要类型 腾讯集团 作为中国最大的游戏公司&#xff0c;腾讯在游戏领域可以说是第一强者。2022年&#xff0c;腾讯的游戏业务营收高达1707亿元&#xff0c;约占了中国整个游戏市场总收入的64%。 刚开始时&…

【机器学习算法】KNN鸢尾花种类预测案例和特征预处理。全md文档笔记(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习&#xff0c;伴随浅显易懂的数学知识&#xff0c;让大家掌握机器学习常见算法原理&#xff0c;应用Scikit-learn实现机器学习算法的应用&#xff0…

基于四足机器人和机械臂的运动控制系统(一)

文章目录 一、项目框架二、设计内容与功能需求1. 导航与路径规划2. 视觉感知3. 运动控制4. 精准遥控5. 环境探测6. 云端监控与数据分析7. 人机协同8. 充电桩9. 紧急响应与救援 三、硬件设计1. 四足机器人2. 机械臂3. 机器主控板4. 遥控器板5. 舵机驱动板 四、软件设计1. 环境2.…

【机器学习笔记】14 关联规则

关联规则概述 关联规则&#xff08;Association Rules&#xff09;反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系&#xff0c;那么&#xff0c;其中一个事物就能够通过其他事物预测到。 关联规则可以看作是一种IF-THEN关系。…

Sora:最强文生视频工具

Sora是什么 Sora&#xff0c;是一款能够根据文本创建出逼真的、富有想象力场景的AI模型。Sora能够娴熟地创造出高达一分钟的高清视频&#xff0c;其视觉内容丰富多样&#xff0c;分辨率精准无误。Sora的强大之处在于&#xff0c;它通过在视频和图像的压缩潜在空间中进行训练&a…

[ai笔记10] 关于sora火爆的反思

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第10篇分享&#xff01; 最近sora还持续在技术圈、博客、抖音发酵&#xff0c;许多人都在纷纷发表对它的看法&#xff0c;这是一个既让人惊喜也感到焦虑的事件。openai从2023年开始&#xff0c;每隔几个…