Docker(1)
文章目录
- Docker
- 物理机部署的缺点
- 虚拟机
- Docker 与虚拟机的区别
- Docker 的优势
- Docker 概念
- 安装 Docker
- Docker 架构
- 镜像加速
- Docker 命令
- 进程服务相关命令
- 镜像相关文件命令
- 容器相关的命令
- 镜像加载的原理
- UnionFS(联合文件系统)
- docker 镜像加载原理
- 容器的数据卷
- 数据卷概念
- 配置数据卷
- 数据卷容器
- 配置数据卷容器
Docker
物理机部署的缺点
- 部署速度慢(需要先安装操作系统,然后安装各种软件)
- 成本较高(需要购买硬件设备)
- 资源可能浪费(不能充分利用硬件资源)
- 迁移和扩展困难(环境可能不一致,硬件可能不兼容)
- 容易受到硬件供应商的限制
虚拟机
在开发、测试和生产环境中编写代码时,可能会遇到环境不一致导致的问题,比如某个库在本地存在但在其他机器上缺失。为了解决这个问题,容器技术应运而生。
容器将代码和运行环境打包在一起,无论在哪里运行,都保持一致性。
Docker 与虚拟机的区别
- 虚拟机:虚拟机通过虚拟机管理器(如 VMWare workstation、VirtualBox)模拟整个硬件系统,每个虚拟机都运行一个完整的操作系统。
- 容器:容器利用 Linux 的
namespace进行资源隔离,利用cgroup对资源进行限制,容器之间互不影响,并且与宿主机共享操作系统内核。

Docker 的优势
- Docker 直接利用宿主机的硬件资源,效率更高。
- Docker 使用宿主机的系统内核,避免了虚拟机启动时的系统引导和资源消耗,可以快速启动容器。
- 虚拟机的安全性通常比容器更高,因为容器共享宿主机的内核,可能存在隔离性不足的风险。
Docker 概念
- Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,并且可以在任何 Linux 机器上运行。
安装 Docker
在 Ubuntu 上安装 Docker 可以参考Ubuntu 安装 Docker的指南。
Docker 架构

- 客户端:通过命令如
docker build、docker pull、docker 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 c3c3就是我们要关闭的容器名
-
删除容器
sudo docker rm c3c3就是我们要删除的容器的名字
我们不能删除一个正在运行的容器
-
查看容器的信息
sudo docker inspect c2
镜像加载的原理
UnionFS(联合文件系统)
- Union文件系统是一种分层,轻量级,高性能的文件系统,支持对文件系统的修改作为一次提交,来一层层的叠加,这些层是独立的,可写的,使他们逻辑上看像是一个文件系统,union文件系统通常用于创建具有多个层次的文件系统,如docker容器的镜像层,每次叠加的都不会影响底部的文件系统,使得docker可以轻松继承和共享基础镜像的文件系统
- union允许不同目录或文件系统挂载到同一个虚拟文件系统中
例如,我们可以将应用程序的代码和配置文件放在不同的目录中,然后通过Union文件系统将它们合并到一个虚拟文件系统中。这样做可以简化应用程序的部署和管理,同时提供更灵活的文件系统组织方式,以满足不同应用程序的需求。
docker 镜像加载原理


容器的数据卷
数据卷概念
-
数据卷是宿主机的一个
目录或文件 -
当容器目录和数据卷目录绑定之后,对方的
修改会进行同步在容器里面的修改,宿主机上也能看到相应的变化,同样,宿主机上的变化,在容器里面也能看到
-
一个数据卷可以被多个容器挂载
解决了多个容器之间的数据交互
-
一个容器可以挂载多个数据卷
数据卷的作用
- 实现了容器数据的
持久化,和数据的同步 - 外部机器和容器之间可以间接通信
- 容器之间可以实现数据交互
- 新容器挂载上原有已经存在的数据卷,可以共享里面存在的数据
配置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
sudo docker run -id --name=c3 -v /home/zevin/docker_data:/root/docker_container redis
数据卷容器
多容器进行数据交互
- 多个容器可以挂载到同一个数据卷上
- 可以使用一个数据卷容器
数据卷容器就是一个容器,挂载到数据卷上,然后别的容器挂载到自己上,进行数据交互
相当于数据卷容器创建了宿主机目录的快捷方式,然后把快捷方式复制到了挂载的容器上,所以即使这个数据卷容器挂了也没有影响
本质就是
去中心化同时,当容器需要挂载多个目录的时候,新容器可以照搬老容器的所有挂载,提高效率
配置数据卷容器
-
启动c3数据卷容器,使用-v 参数设置数据卷
sudo docker run -it --name=c3 -v /volume redis -
传建启动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中设置为共享文件夹 参考博文: https://zhuanlan.zhihu.com/p/650638983 2.解决: (1)fuse: mountpoint is not empty (2)普通用户也能使用共享目录 参考博文&#x…...
【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析
【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析 1 题目 坑洼道路检测和识别是一种计算机视觉任务,旨在通过数字图像(通常是地表坑洼图像)识别出存在坑洼的道路。这…...
Mozilla Firefox 119 现已可供下载
Mozilla Firefox 119 开源网络浏览器现在可以下载了,是时候先看看它的新功能和改进了。 Firefox 119 改进了 Firefox View 功能,现在可以提供更多内容,如最近关闭的标签页和浏览历史,你可以按日期或网站排序,还支持查…...
What is 哈希?
哈希 前言:大一大二就一直听说哈希哈希,但一直都没有真正的概念:What is 哈希?这篇博客就浅浅聊一下作者认知中的哈希。 理解哈希 哈希(Hash)也可以称作散列,实质就是一种映射…...
在Photoshop中如何校正倾斜的图片
在Photoshop中如何校正倾斜的图片呢?今天就教大家如何操作。 将需要操作的图片拉到PS软件中,自动形成项目。 点击上方“滤镜”中的“镜头校正”。 进入“镜头校正”窗口,点击左侧的“拉直工具”。文章源自设计学徒自学网-http://www.sx1c.co…...
Maven第六章:Maven的自定义插件开发
Maven第六章:Maven的自定义插件开发 前言 maven不仅仅只是项目的依赖管理工具,其强大的核心来源自丰富的插件,可以说插件才是maven工具的灵魂。本篇文章将对如何自定义maven插件进行讲解,希望对各位读者有所帮助。 Maven插件开发的基本概念 Maven插件是由Maven构建工具本身…...
springboot 注入配置文件中的集合 List
在使用 springboot 开发时,例如你需要注入一个 url 白名单列表,你可能第一想到的写法是下面这样的: application.yml white.url-list:- /test/show1- /test/show2- /test/show3Slf4j RestController RequestMapping("/test") pub…...
springboot整合redis+lua实现getdel操作保证原子性
原始代码 脚本逻辑先获取redis的值,判断是否等于期望值。 条件成立则删除,不成立则返回0 if redis.call(get, KEYS[1]) ARGV[1] thenreturn redis.call(del, KEYS[1]) end return 0 测试代码 根据上面的逻辑加了测试, 在判断成功后等待5…...
win10系统nodejs的安装npm教程
1.在官网下载nodejs,https://nodejs.org/en 2,双击nodejs的安装包 3,点击 next 4,勾选I accpet the terms in…… 5,第4步点击next进入配置安装路径界面 6,点击next,选中Add to PATH ,旁边…...
C语言assert函数:什么是“assert”函数
我一直在学习 OpenCV 教程,遇到了assert函数;它做什么? assert将终止程序(通常带有引用 assert 语句的消息),如果其参数为 false。它通常在调试过程中使用,以使程序在发生意外情况时更明显地失败。 例如&…...
R语言绘图-5-条形图(修改坐标轴以及图例等)
0. 说明: 1. 绘制条形图; 2. 添加文本并调整位置; 3. 调整x轴刻度的字体、角度及颜色; 4. 在导出pdf时,如果没有字体,该怎么解决问题; 1. 结果: 2. 代码: library(ggp…...
uniapp自定义权限菜单,动态tabbar
已封装为组件,亲测4个菜单项目可以切换, 以下为示例,根据Storage 中 userType 的 值,判断权限菜单 <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目录所属的用户组和用户,以及权限6.进入mysql/bin/目录,安装初始化7.编辑/etc/mysql/my.cnf配置文件8.启动 MySQL 服务:9.建立…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
