当前位置: 首页 > 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.建立…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...