当前位置: 首页 > news >正文

Docker(1)

文章目录

  • Docker
    • 物理机部署的缺点
    • 虚拟机
    • Docker 与虚拟机的区别
      • Docker 的优势
    • Docker 概念
    • 安装 Docker
    • Docker 架构
    • 镜像加速
    • Docker 命令
      • 进程服务相关命令
    • 镜像相关文件命令
    • 容器相关的命令
  • 镜像加载的原理
    • UnionFS(联合文件系统)
    • docker 镜像加载原理
  • 容器的数据卷
    • 数据卷概念
    • 配置数据卷
    • 数据卷容器
      • 配置数据卷容器

Docker

物理机部署的缺点

  • 部署速度慢(需要先安装操作系统,然后安装各种软件)
  • 成本较高(需要购买硬件设备)
  • 资源可能浪费(不能充分利用硬件资源)
  • 迁移和扩展困难(环境可能不一致,硬件可能不兼容)
  • 容易受到硬件供应商的限制

虚拟机

在开发、测试和生产环境中编写代码时,可能会遇到环境不一致导致的问题,比如某个库在本地存在但在其他机器上缺失。为了解决这个问题,容器技术应运而生。

容器将代码和运行环境打包在一起,无论在哪里运行,都保持一致性。

Docker 与虚拟机的区别

  • 虚拟机:虚拟机通过虚拟机管理器(如 VMWare workstation、VirtualBox)模拟整个硬件系统,每个虚拟机都运行一个完整的操作系统。
  • 容器:容器利用 Linux 的 namespace 进行资源隔离,利用 cgroup 对资源进行限制,容器之间互不影响,并且与宿主机共享操作系统内核。

Docker 与虚拟机的对比图

Docker 的优势

  1. Docker 直接利用宿主机的硬件资源,效率更高。
  2. Docker 使用宿主机的系统内核,避免了虚拟机启动时的系统引导和资源消耗,可以快速启动容器。
  3. 虚拟机的安全性通常比容器更高,因为容器共享宿主机的内核,可能存在隔离性不足的风险。

Docker 概念

  • Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,并且可以在任何 Linux 机器上运行。

安装 Docker

在 Ubuntu 上安装 Docker 可以参考Ubuntu 安装 Docker的指南。

Docker 架构

Docker 架构图

  • 客户端:通过命令如 docker builddocker pulldocker run 与 Docker 交互。
  • 宿主机
    • Image(镜像):包含应用及其运行环境的文件。
    • Container(容器):镜像的运行实例,可以被创建、启动、停止、删除等。
  • 仓库(Registries):远程存储镜像的地方,可以是公共或私有的。

镜像加速

由于很多 Docker 镜像存储在国外,可以使用镜像加速配置以提高下载速度。

Docker 命令

Docker 命令的详细列表可查看Docker 命令大全。

进程服务相关命令

启动 Docker:

systemctl start docker

观察docker状态

systemctl status docker

停止docker

systemctl stop docker

重启docker

systemctl restart docker

设置开机自动启动

systemctl enable docker

镜像相关文件命令

本地查看镜像文件

docker images

  • repository:hello-world,就是一个镜像文件,里面打包了很多 软件运行环境
  • tag:就是这个镜像文件的版本号
  • id:就是镜像的id
  • create:创建的时间
  • size:镜像的大小

查看本地的所有镜像id

docker images -q

搜索镜像文件

(sudo) docker search redis

搜索是否有redis镜像文件

name;搜索到和redis相关的镜像文件名

description:该文件的描述

official:是否是官方的


下载镜像文件

docker pull redis:(number)

:后面指定要下载的版本

如果没有指定的话,就是下载最新版本

可以登陆docker官方网站,搜索对应要下载的镜像名,查看版本号,添加在:后面即可


删除对应的镜像

docker rmi [image ID]

后面是要删除的镜像id

容器相关的命令

通过镜像文件实例出对应的对象

  • 创建容器
docker run -it --name=c1 redis /bin/bash
sudo docker run -id --name=c3 redis
  • -i :保持容器一直运行着,如果没有加的话,没有客户端连接,容器就会自动关闭,在容器关闭的时候自动关闭容器
  • -t:启动的时候可以添加一个终端
  • -d: 启动的时候不会自动进入容器,会在后台运行,退出之后容器不会关闭
  • –name=c1:给这个容器起名字为c1
  • redis :就是我们要启动的容器对应的镜像文件,可以在镜像文件后添加:,附带上版本号
  • /bin/zsh :进入容器的初始化指令,进入容器之后,就打开的bash

回车之后就进入了一个docker容器,就是一个linux的环境

  • 进入容器
    这个是需要使用-d创建出来的容器

    sudo docker exec -it c3 /bin/bash

    进入到c3这个容器中,/bin/bash后面就是指定的命令

  • 退出

    exit
    
  • 查看容器

    • 查看历史上登陆过的所有容器

      docker ps -a
      
      • container id:容器的id
      • image:容器对应的镜像
      • command:进入容器对应的命令
      • names:容器的名字
    • 查看正在在线的容器

      docker ps
      
  • 启动容器

  • 停止容器

    sudo docker stop c3 
    

    c3就是我们要关闭的容器名

  • 删除容器

    sudo docker rm c3
    

    c3就是我们要删除的容器的名字

    我们不能删除一个正在运行的容器

  • 查看容器的信息

    sudo docker inspect c2
    

镜像加载的原理

UnionFS(联合文件系统)

  • Union文件系统是一种分层,轻量级,高性能的文件系统,支持对文件系统的修改作为一次提交,来一层层的叠加,这些层是独立的,可写的,使他们逻辑上看像是一个文件系统,union文件系统通常用于创建具有多个层次的文件系统,如docker容器的镜像层,每次叠加的都不会影响底部的文件系统,使得docker可以轻松继承和共享基础镜像的文件系统
  • union允许不同目录或文件系统挂载到同一个虚拟文件系统中

例如,我们可以将应用程序的代码和配置文件放在不同的目录中,然后通过Union文件系统将它们合并到一个虚拟文件系统中。这样做可以简化应用程序的部署和管理,同时提供更灵活的文件系统组织方式,以满足不同应用程序的需求。

docker 镜像加载原理

在这里插入图片描述
在这里插入图片描述

容器的数据卷

数据卷概念

  • 数据卷是宿主机的一个 目录文件

  • 当容器目录和数据卷目录绑定之后,对方的 修改会进行同步

    在容器里面的修改,宿主机上也能看到相应的变化,同样,宿主机上的变化,在容器里面也能看到

  • 一个数据卷可以被多个容器挂载

    解决了多个容器之间的数据交互

  • 一个容器可以挂载多个数据卷

数据卷的作用

  1. 实现了容器数据的持久化,和数据的同步
  2. 外部机器和容器之间可以间接通信
  3. 容器之间可以实现数据交互
  4. 新容器挂载上原有已经存在的数据卷,可以共享里面存在的数据

配置数据卷

docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
sudo docker run -id --name=c3 -v /home/zevin/docker_data:/root/docker_container redis

数据卷容器

多容器进行数据交互

  1. 多个容器可以挂载到同一个数据卷上
  2. 可以使用一个数据卷容器

数据卷容器就是一个容器,挂载到数据卷上,然后别的容器挂载到自己上,进行数据交互

相当于数据卷容器创建了宿主机目录的快捷方式,然后把快捷方式复制到了挂载的容器上,所以即使这个数据卷容器挂了也没有影响

本质就是 去中心化

同时,当容器需要挂载多个目录的时候,新容器可以照搬老容器的所有挂载,提高效率

配置数据卷容器

  1. 启动c3数据卷容器,使用-v 参数设置数据卷

    sudo docker run -it --name=c3 -v /volume redis
    
  2. 传建启动c2,c1容器,使用 --volumes-from 参数来继承数据卷容器

    sudo docker run -id --name=c1 --volumes-from c3 redis
    

相关文章:

Docker(1)

文章目录 Docker物理机部署的缺点虚拟机Docker 与虚拟机的区别Docker 的优势 Docker 概念安装 DockerDocker 架构镜像加速Docker 命令进程服务相关命令 镜像相关文件命令容器相关的命令 镜像加载的原理UnionFS(联合文件系统)docker 镜像加载原理 容器的数据卷数据卷概念配置数据…...

axios 实现请求重试

前景提要: ts 简易封装 axios,统一 API 实现在 config 中配置开关拦截器 请求重试的核心是可以重放请求,具体实现就是在 axios 中,拿到当前请求的 config 对象,再用 axios 实例,就能重放请求。 在无感刷新…...

SSE加速随笔

Intel Intrinsics Guide 搞懂SSE 寄存器与指令数据细节 SSE指令集推出时,Intel公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器,称作XMM0到XMM7。这些XMM寄存器用于4个单精度浮点数运算的SIMD执行,并可以与MMX整数运算或x87浮点运…...

【TES720D】青翼科技基于复旦微的FMQL20S400全国产化ARM核心模

板卡概述 TES720D是一款基于上海复旦微电子FMQL20S400的全国产化核心模块。该核心模块将复旦微的FMQL20S400(兼容FMQL10S400)的最小系统集成在了一个50*70mm的核心板上,可以作为一个核心模块,进行功能性扩展,特别是用…...

arcgis删除细长图斑的方法

1、有一张图斑数据如下: 如上图,有很多细长的面要素,需要保留的仅是图中的块状要素。 2、首先要将被合并的要素进行拆分,具体拆分步骤如下: 将所有要素选中,点击高级编辑中的拆分按钮。 3、拆分后图斑就…...

Flutter笔记:Flutter的WidgetsBinding.instance的window属性

Flutter笔记 Flutter的WidgetsBinding.instance的window属性 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/det…...

element UI DatePicker 日期选择器 点击时间点可选限制范围前后十五天

<el-date-picker v-model"timeRange" type"datetimerange" align"right" :default-timedefaultTimevalue-format"yyyy-MM-dd HH:mm:dd" range-separator"至" start-placeholder"开始日期"end-placeholder"…...

【自用】vmware workstation建立主机window与虚拟机ubuntu之间的共享文件夹

1.在windows中建立1个文件夹 在vmware中设置为共享文件夹 参考博文&#xff1a; https://zhuanlan.zhihu.com/p/650638983 2.解决&#xff1a; &#xff08;1&#xff09;fuse: mountpoint is not empty &#xff08;2&#xff09;普通用户也能使用共享目录 参考博文&#x…...

【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析

【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A&#xff1a;基于计算机视觉的坑洼道路检测和识别 python 代码解析 1 题目 坑洼道路检测和识别是一种计算机视觉任务&#xff0c;旨在通过数字图像&#xff08;通常是地表坑洼图像&#xff09;识别出存在坑洼的道路。这…...

Mozilla Firefox 119 现已可供下载

Mozilla Firefox 119 开源网络浏览器现在可以下载了&#xff0c;是时候先看看它的新功能和改进了。 Firefox 119 改进了 Firefox View 功能&#xff0c;现在可以提供更多内容&#xff0c;如最近关闭的标签页和浏览历史&#xff0c;你可以按日期或网站排序&#xff0c;还支持查…...

What is 哈希?

哈希 ​ 前言&#xff1a;大一大二就一直听说哈希哈希&#xff0c;但一直都没有真正的概念&#xff1a;What is 哈希&#xff1f;这篇博客就浅浅聊一下作者认知中的哈希。 理解哈希 ​ 哈希&#xff08;Hash&#xff09;也可以称作散列&#xff0c;实质就是一种映射&#xf…...

在Photoshop中如何校正倾斜的图片

在Photoshop中如何校正倾斜的图片呢&#xff1f;今天就教大家如何操作。 将需要操作的图片拉到PS软件中&#xff0c;自动形成项目。 点击上方“滤镜”中的“镜头校正”。 进入“镜头校正”窗口&#xff0c;点击左侧的“拉直工具”。文章源自设计学徒自学网-http://www.sx1c.co…...

Maven第六章:Maven的自定义插件开发

Maven第六章:Maven的自定义插件开发 前言 maven不仅仅只是项目的依赖管理工具,其强大的核心来源自丰富的插件,可以说插件才是maven工具的灵魂。本篇文章将对如何自定义maven插件进行讲解,希望对各位读者有所帮助。 Maven插件开发的基本概念 Maven插件是由Maven构建工具本身…...

springboot 注入配置文件中的集合 List

在使用 springboot 开发时&#xff0c;例如你需要注入一个 url 白名单列表&#xff0c;你可能第一想到的写法是下面这样的&#xff1a; application.yml white.url-list:- /test/show1- /test/show2- /test/show3Slf4j RestController RequestMapping("/test") pub…...

springboot整合redis+lua实现getdel操作保证原子性

原始代码 脚本逻辑先获取redis的值&#xff0c;判断是否等于期望值。 条件成立则删除&#xff0c;不成立则返回0 if redis.call(get, KEYS[1]) ARGV[1] thenreturn redis.call(del, KEYS[1]) end return 0 测试代码 根据上面的逻辑加了测试&#xff0c; 在判断成功后等待5…...

win10系统nodejs的安装npm教程

1.在官网下载nodejs&#xff0c;https://nodejs.org/en 2&#xff0c;双击nodejs的安装包 3&#xff0c;点击 next 4&#xff0c;勾选I accpet the terms in…… 5&#xff0c;第4步点击next进入配置安装路径界面 6,点击next&#xff0c;选中Add to PATH &#xff0c;旁边…...

C语言assert函数:什么是“assert”函数

我一直在学习 OpenCV 教程&#xff0c;遇到了assert函数;它做什么&#xff1f; assert将终止程序&#xff08;通常带有引用 assert 语句的消息&#xff09;&#xff0c;如果其参数为 false。它通常在调试过程中使用&#xff0c;以使程序在发生意外情况时更明显地失败。 例如&…...

R语言绘图-5-条形图(修改坐标轴以及图例等)

0. 说明&#xff1a; 1. 绘制条形图&#xff1b; 2. 添加文本并调整位置&#xff1b; 3. 调整x轴刻度的字体、角度及颜色&#xff1b; 4. 在导出pdf时&#xff0c;如果没有字体&#xff0c;该怎么解决问题&#xff1b; 1. 结果&#xff1a; 2. 代码&#xff1a; library(ggp…...

uniapp自定义权限菜单,动态tabbar

已封装为组件&#xff0c;亲测4个菜单项目可以切换&#xff0c; 以下为示例&#xff0c;根据Storage 中 userType 的 值&#xff0c;判断权限菜单 <template><view class"tab-bar pb10"><view class"tabli" v-for"(tab, index) in ta…...

ubuntu20.04配置解压版mysql5.7

目录 1.创建mysql 用户组和用户2.下载 MySQL 5.7 解压版3.解压 MySQL 文件4.将 MySQL 移动到适当的目录5.更改mysql目录所属的用户组和用户&#xff0c;以及权限6.进入mysql/bin/目录&#xff0c;安装初始化7.编辑/etc/mysql/my.cnf配置文件8.启动 MySQL 服务&#xff1a;9.建立…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...