docker由浅入深

news2024/9/22 21:17:57

一、什么是docker

docker 顾名思义就是轮船的意思,轮船我们知道是通过集装箱运载货物的东西,那么docker其实也是类似的东西,只是装载的是虚拟的运行程序罢了。其中集装箱在docker里面被称为container(后面以容器称之)。
docker做的事情就是通过容器隔离各个运行程序或者叫APP之间的环境,达到可以一键部署或者快速迁移到别的设备上的过程,整体框架如下图所示:
docker整体框架图
docker采用的是client-server的架构,也就是客户端-服务端的架构,客户端(上图client部分)其实就是docker这个轮船想要将他的容器搬到的地方,就像轮船的目的地一样;然后服务端(上图docker host和registry部分)其实就是docker中容器的构建,通俗点讲就是怎么做好这个集装箱(容器),以及如何将货物(app,以及环境依赖)存放在这个集装箱里面去,就是轮船的出发地或者生成车间。

二、为什么要docker

docker发明出来是用来干嘛前文已经讲到了,那为什么要docker这种技术呢。docker的目标其实就一句话“build once, run everywhere”,我编译一次之后可以在不同的地方上运行起来,而不需要考虑环境配置的问题,这个有点像python中用conda或者pip来管理并配置运行环境依赖。
所以为什么要docker,也就是docker这个东西的作用:

  1. docker可以在一台电脑或者机器上构建多个container,然后各自独立运行
  2. docker隔离不同container之间的好处还有一点就是系统空间资源可以复用,可以维护多个版本,最新开发的版本出了问题可以快速回退之间的版本或者定位bug啥的
  3. 构建好了container可以通过打包的方式去快速部署到其他机器上,快速在开发-运维-测试之间快速验证对应功能的效果
  4. 构建一个container可以多个同事之间共同访问,而不需要从零开始搭建环境,就可以快速迭代app的一些功能完成一些功能的开发或者测试复现啥的(这个有点像git对应的代码管理,只是git只是共同管理源代码,而docker还需要管理编译好的可执行程序以及环境依赖)
  5. 既然可以快速部署,那发现bug或者错误的时候就可以快速修改并重新打包给到测试或者其他人员测试反馈
  6. 相比于虚拟机,docker是更轻量级的,可以快速启动和结束,执行效率比虚拟机要高很多
  7. docker可以指定或者限制当前容器只可以看到整个机器的部分资源,比如构建docker的时候我只需要在服务器上用到0号GPU(这个服务器总共有0-7号服务器8张卡),那构建container的时候就可以指定我只用第0号卡去运行我的程序;或者我只可以访问/media/sda这个目录啥的,还有内存的上限设置等

三、docker怎么用

看到docker有这么多用处,那我们怎么使用docker。首先先了解一些docker涉及到的常用概念和命令,以及一些常用的功能,这样基本上就可以解决绝大部分的问题了。

3.1 常见的概念

  1. 镜像(Image):其实就是一套文件系统,比如我们如果要安装ubuntu环境的一般都是下载一个Ubuntu的镜像文件来安装。
  2. 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
  3. 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

3.2 docker常见的命令

docker有很多命令来控制或者生成一些东西。如果要从零开始在电脑上安装docker,建议还是Ubuntu等linux下或者window系统中虚拟机环境中。docker本身是go语言开发的基于linux环境的一款产品。从零开始安装我建议可以看看一些基础教程,比如菜鸟教程这里我只给出一些我工作中常用的一些命令:

  1. docker images: 列举出当前设备下的所有docker镜像,一般是安装好了镜像之后会去查看一下,或者要通过某一个镜像要去构建container的时候会去看看某一个镜像的一些基础参数等,另外就是管理设备上的镜像,比如我想要删除某一个很老的镜像
  2. docker ps -a: 列举出当前设备下所有的容器的一些信息,比如ID,name,对应的镜像是哪个,什么时候创建的,以及是否处于待机或者关闭状态等。如果不加-a这是列举出当前设备下的所有start好的容器的信息。一般是在需要管理容器或者开启某一个容器的时候会去调用并查看一下信息
  3. docker start container name(container ID): 开启一个container,比如我需要将某一个容器名称叫test开启(本身test这个容器是属于关闭状态),然后我就调用 docker start test,就可以start这个容器了
  4. docker exec -it container_name /bin/bash:这条命令一般是在3的基础上开始运行某一个容器的命令,当然还有其他的参数可以设置,这里的意思是以bash命令用户交互窗口界面的方式运行container_name,进入容器之后就是我们普通的Linux的开始界面了,可以输入我们的一些Linux的一些命令,完成对应的一些操作。更多参数说明请使用docker exec --help命令查看。进入容器想要退出直接在界面中输入exit即可。
  5. docker pull xxx: 从远端仓库中拉取一些编译好的镜像部署到本地机器上。
  6. docker export container_name/ID > xxx.tar: 将一个容器导出成一个tar打包好的文件,这样就可以在其他机器上部署这个容器了
  7. docker import: 将一个容器导入到本地机器上,比如cat xxx.tar | docker import - test 就是将xxx.tar的容器文件导入到本地test这个容器中
  8. docker rm/stop/restart xxx: 表示删除/停止/重启某一个容器,一般是用来管理本地机器上的容器。比如我们如果想要修改某一个容器的一些配置,我们就需要先关掉这个容器,然后sudo su权限下,修改/var/lib/docker/container_ID目录下的hostconfig.json以及config.v2.json文件中的参数设置,最后再restart这个容器(可以参考docker给已经启动容器添加挂载目录_51CTO博客_docker容器挂载目录)

四、docker的替代方案

docker是一个很好的产品,但是也是有一些替换方案的,比如podman等,具体可以参看文章等其他相关的一些文章,这里就不赘述了

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

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

相关文章

林浩然的Python奇遇记:从小白到科学界的编程魔法师

林浩然的Python奇遇记:从小白到科学界的编程魔法师 Lin Haoran’s Python Adventure: From Novice to Programming Sorcerer in the Scientific Realm 在那个平凡的午后,我们的主角林浩然——一个对编程一窍不通但对世界充满好奇的物理学大二学生&#x…

qiankun子应用静态资源404问题有效解决(遇到了http请求静态文件404、css文件引用图片无法显示、svg图片转换成 base64无法显示等问题)

在👉🏻 qiankun微前端部署👈🏻这个部署方式的前提下,遇到的问题并解决问题的过程 >> 问题现象 通过http请求本地的静态json文件404 css中部分引入的图片无法显示 >> 最开始的解决方式 在👉…

Linux第36步_创建正点原子的TF-A工作区

创建正点原子的TF-A工作区,目的是想查看正点原子的设备树文件“stm32mp157d-atk.dts”和设备树头文件“stm32mp157d-atk.dtsi”,了解设备树是什么样子,为后期基于“ST公司的源码”创建自己的设备树提供参考,同时也是为了学习移植u…

飞桨大模型分布式训练技术

今天我为大家介绍飞桨大模型分布式训练技术,内容分为以下几个部分: 首先,我会介绍大模型训练面临的重点难题;然后,为大家介绍飞桨在大模型训练领域的特色分布式训练技术和优化方案;最后,伴随着…

NeRF:神经辐射场复杂场景的新视图合成技术

NeRF:神经辐射场复杂场景的新视图合成技术 NeRF:神经辐射场复杂场景的新视图合成技术项目背景与意义如何运行?快速开始更多数据集 预训练模型方法与实现结语服务 NeRF:神经辐射场复杂场景的新视图合成技术 在计算机视觉领域&…

工业物联网网关如何实现工业设备的远程运维?-天拓四方

随着工业4.0和智能制造的快速发展,工业设备的远程运维已经成为提高企业生产效率和降低运营成本的重要手段。工业物联网网关作为这一过程中的关键组件,发挥着不可或缺的作用。本文将重点探讨工业物联网网关如何实现工业设备的远程运维,并结合实…

网络和Linux网络_15(IO多路转接)reactor编程_服务器+相关笔试题

目录 1. reactor的服务器 1.1 Sock.hpp 1.2 加协议分割报文 1.3 序列化和反序列化 Protocol.hpp main.cc Epoll.hpp TcpServer.hpp 2. 相关笔试题 答案及解析 本篇完。 1. reactor的服务器 Log.hpp和以前一样,因为下面要写ET模式所以Sock.hpp加了一个把…

[Python] 什么是集成算法,什么是随机森林?随机森林分类器(RandomForestClassifier)及其使用案例

什么是集成算法? 集成算法是一种机器学习方法,它将多个基本的学习算法(也称为弱学习器)组合在一起,形成一个更强大的预测模型。集成算法通过对基本模型的预测进行加权平均或多数投票等方式,来产生最终的预…

【Leetcode】两数之和

目录 题目: 解法1:暴力双for 1.想到的第一种方法两for循环解 复杂度分析 解法2:hash表 总结: 笔记: 题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标…

简单区间DP

文章目录 什么是区间DpAcWing 282. 石子合并题意分析思路解析状态表示状态计算 CODE需要注意的问题 什么是区间Dp 区间Dp指的是某些问题可以用区间来划分解决。 AcWing 282. 石子合并 题目链接:穿梭时间的画面的钟 题意分析 从一排石子中选择相邻的两堆进行合并…

2024-01-25 力扣高频SQL50题目1193每月交易

1.1193每月交易 1 count可以这样用。。 COUNT(IF(state approved, 1, NULL)) AS approved_count 如果 COUNT(if(state approved,1,0)),这里变成0,就不对了。因为count计数时候,只要里面不是null,就会算进去。 sum(if(state …

(学习日记)2024.01.27

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

行为型设计模式—迭代器模式

迭代器模式:也叫作游标模式,能在不暴露复杂数据结构内部细节的情况下遍历其中所有的元素。在迭代器的帮助下, 客户端可以用一个迭代器接口以相似的方式遍历不同集合中的元素。 当集合背后为复杂的数据结构,且希望对客户端隐藏其复…

漏洞原理文件上传漏洞

一 文件上传漏洞介绍(理论) 文件上传漏洞是一种常见的web应用程序漏洞,允许攻击者向服务器上传恶意文件。这种漏洞可在没有恰当的安全措施的情况下,将任意类型的文件上传到服务器上,从而可能导致以下安全问题&#xff…

【lesson1】高并发内存池项目介绍

文章目录 这个项目做的是什么?这个项目的要求的知识储备和难度?什么是内存池池化技术内存池内存池主要解决的问题malloc 这个项目做的是什么? 当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc&#xf…

Python 字典及常见应用(Python Dctionary)

字典是python的内置基本数据类型之一,其他语言中可能会被称为“关联存储”或“关联数组”。它是一种映射关系,以包含在{}中的"键:值"对表示。字典是一种可变对象,键没有顺序。其主要用途是通过关键字存储、提取值。 目录 一、字典的…

3分钟搞定幻兽帕鲁联机,一键部署专属服务器

3分钟搞定幻兽帕鲁联机,一键部署专属服务器 访问帕鲁专题活动页 登录阿里云官网,用钉钉或者支付宝app扫码注册新用户(新用户福利较多,优惠力度大) 进入阿里云游戏联机服务器专题页,点击 一键购买及部署 即可…

记录一条sql查询:以逗号隔开的id字符串的查询

目录 前言表结构sql语句 前言 在一个项目中有两张表,一张是商品码表,一张是记录出库单明细的出库记录表,记录表中有一个字段保存了以逗号隔开的商品码表的id字符串,需要根据出库明细id查找到对应出库的商品码。 表结构 goods_det…

TypeScript(六) 循环语句

1. TypeScript循环语句 1.1. 简述 有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。   循环语句允许我们多次执行一个语句或语句组…

【开源】JAVA+Vue.js实现大学兼职教师管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管理3.3 课程管理模块3.4 授课管理模块3.5 课程考勤模块3.6 课程评价模块3.7 课程成绩模块3.8 可视化图表 四、免责说明 一、摘要 1.1 项目介绍 大学兼职教师管理系统,旨…