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

Docker技术仓库

数据卷

为什么用数据卷?

  1. 宿主机无法直接访问容器中的文件
  2. 容器中的文件没有持久化,导致容器删除后,文件数据也随之消失
  3. 容器之间也无法直接访问互相的文件

为解决这些问题,docker加入了数据卷机制,能很好解决上面问题。

  1. 容器与主机之间、容器与容器之间共享文件
  2. 容器中数据的持久化
  3. 将容器中的数据备份、迁移、恢复等 

数据卷的特点 

  • 数据卷存在于宿主机的文件系统中,独立于容器,和容器的生命周期是分离的。
  • 数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。
  • 可以使用Docker命令行工具或Docker Compose等工具来创建、删除、备份和恢复数据卷。
  • 由于数据卷存储在主机上的指定位置,相对于容器来说较为隔离,这提供了更高的数据安全性。
  • 容器对数据卷的修改是实时进行的。 

 数据卷管理

Docker挂载容器数据卷的三种方式

  • bind mounts:将宿主机上的一个文件或目录被挂载到容器上。
  • volumes:由Docker创建和管理。使用docker volume命令管理。
  • tmpfs mounts:tmpfs 是一种基于内存的临时文件系统。

bind mounts方式挂载数据卷

利用docker run/create的参数为容器挂载数据卷

--mount参数          

--mount type=bind, src=宿主机文件或文件夹路径, dst=容器中的文件或者文件夹路径 

 volumes方式挂载数据卷

--mount 参数         

--mount type=volume, src=VOLUME-NAME, dst=容器中的文件或者文件夹路径

Docker的数据卷更多会是使用volumes方式来进行使用。 

Docker仓库 

Docker仓库就是存放docker镜像并有docker pull方法下载的云环境,可以分为公有仓库和私有仓库:

  • 公有仓库指Docker Hub(官方)等开放给用户使用、允许用户管理镜像。     
  • 私有仓库指由用户自行搭建的存放镜像的云环境。 

私有仓库搭建  

  1. 拉取私有仓库镜像:需要从Docker Hub拉取官方提供的registry镜像,使用命令 docker pull registry
  2. 启动私有仓库容器:运行命令 docker run -id --name=registry -p 5000:5000 registry,这将创建一个名为registry的容器,并将主机的5000端口映射到容器的5000端口。
  3. 验证私有仓库是否搭建成功:打开浏览器访问 http://私有仓库服务器ip:5000/v2/_catalog,如果看到 {'repositories': []},则表示私有仓库搭建成功。
  4. 配置Docker信任私有仓库地址:修改 /etc/docker/daemon.json 文件,添加 "insecure-registries":["私有仓库服务器ip:5000"],使Docker信任指定的私有仓库地址。注意替换为自己私有仓库服务器的真实IP。
  5. 重启Docker服务:执行 systemctl restart docker 来重启Docker服务,使得之前的更改生效。
  6. 将镜像上传至私有仓库:先使用 docker tag 命令为本地镜像添加一个标签,格式为 私有仓库服务器IP:5000/centos:7。然后使用 docker push 命令将标记的镜像上传到私有仓库。
  7. 从私有仓库拉取镜像:使用 docker pull 命令可以从私有仓库拉取已经上传的镜像。

Dockerfile 

Dockerfile就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像 。

Dockerfile使用命令 – docker build

作用:根据dockerfile创建镜像

docker build [OPTIONS] PATH | URL | - 

-t, --tag list        为镜像设置名称和tag       

-f, --file string        指定Dockerfile的路径

特征:

Dockerfile 由一系列指令构成,每个指令通常在文件中占据一行。指令包括基础镜像设置(FROM)、维护者信息(MAINTAINER)、环境变量设置(ENV)、复制文件(COPYADD)、安装软件包(RUN)、设置工作目录(WORKDIR)、暴露端口(EXPOSE)、指定入口点(CMDENTRYPOINT)等,每一个Dockerfile命令都会构建一层镜像。

Dockerfile 命令 

  •  FROM: 指定基础镜像
  • RUN: 构建镜像过程中需要执行的命令。。
  • docker build CMD:添加启动容器时需要执行的命令。
  • ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。 
  • MLABELAINTAINER:表明镜像的作者。将被遗弃,被LABEL代替。
  • EXPOSE:设置对外暴露的端口。
  • ENV:设置执行命令时的环境变量,并且在构建完成后,仍然生效
  • ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失
  • ADD:将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件
  • COPY:将本地文件或目录拷贝到镜像的文件系统中。
  • VOLUME:添加数据卷
  • USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
  • WORKDIR:设置工作目录

 Docker Compose

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具

Docker Compose 是 Docker 的官方工具,它允许用户通过编写一个 YAML 文件来配置应用服务。这个配置文件可以定义服务的启动顺序、网络设置、挂载的卷以及其他与服务相关的选项。

Docker Compose 的一些主要功能:

  • 简化多容器应用管理:使用 Docker Compose,开发者可以通过一个配置文件定义多个容器及其相互关系,然后使用一个命令来创建和启动所有服务。
  • 编排容器集群:Compose 项目负责实现对 Docker 容器集群的快速编排,使得部署和管理容器变得更加高效。
  • 支持多种环境:Docker Compose 可以在各种环境中运行,包括生产环境、测试环境和开发环境,以及CI(持续集成)等场景。
  • 声明式配置:通过编写 docker-compose.yml 文件,用户可以声明式地定义服务的配置,这有助于版本控制和团队成员之间的协作。
  • 网络互通:在配置文件中,可以定义服务之间的网络连接,确保容器之间能够相互通信。
  • 灵活的变量支持:Docker Compose 支持使用变量来自定义配置,这使得在不同环境之间迁移和部署变得更加灵活。

 管理方式:

使用YAML文件来配置我们应用程序的服务,使用单个命令(docker-compose up),就可以创建并启动配置文件中配置的所有服务。

Docker Compose File 有多个版本,基本是向后兼容的,但也有极个别配置项高版本中没有。

Docker Compose File 顶级配置项:

  • version:指定Docker Compose File版本号。
  • services:定义多个服务并配置启动参数。
  • volumes:声明或创建在多个服务中共同使用的数据卷对象。
  • volumes:声明或创建在多个服务中共同使用的数据卷对象。
  • configs:声明将在本服务中要使用的一些配置文件。
  • secrets:声明将在本服务中要使用的一些秘钥、密码文件。 

相关文章:

Docker技术仓库

数据卷 为什么用数据卷? 宿主机无法直接访问容器中的文件容器中的文件没有持久化,导致容器删除后,文件数据也随之消失容器之间也无法直接访问互相的文件 为解决这些问题,docker加入了数据卷机制,能很好解决上面问题…...

Kotlin学习 6

1.接口 interface Movable {var maxSpeed: Intvar wheels: Intfun move(movable: Movable): String}class Car(var name: String, override var wheels: Int 4, _maxSpeed: Int) : Movable {override var maxSpeed: Int _maxSpeedget() fieldset(value) {field value}overr…...

⭐北邮复试刷题LCR 052. 递增顺序搜索树__DFS (力扣119经典题变种挑战)

LCR 052. 递增顺序搜索树 给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 示例 1: 输入:root [5,…...

获取discord上自己创建的服务器的服务器ID、频道ID以及discord的登录token(用于第三方登录)

在服务器图标上右键点击-》复制服务器ID 在频道上右键点击-》复制频道ID F12->手机模式-》application-》local storage-》填写过滤条件【token】 我开发的chatgpt网站: https://chat.xutongbao.top...

图纸透明加密:保护机械图纸安全的新方法

随着信息技术的不断发展,机械制造行业对于图纸安全的需求越来越高。机械图纸是企业的核心竞争力之一,泄露可能导致严重的商业损失和技术风险。为了解决这一问题,图纸透明加密成为了一种新的保护机械图纸安全的方法。本文将介绍图纸透明加密的…...

基于springboot + vue实现的前后端分离-酒店管理系统

项目介绍 基于springboot vue实现的酒店管理系统一共有酒店管理员和用户这两种角色。 管理员功能 登录:管理员可以通过登录功能进入系统,确保只有授权人员可以访问系统。用户管理:管理员可以添加、编辑和删除酒店的用户,包括前…...

79.SpringBoot的核心注解

一、SpringBoot的核心注解 SpringBootApplication注解:这个注解标识了一个SpringBoot工程,它实际上是另外三个注解的组合,这三个注解是:SpringBootConfiguration:这个注解实际就是一个Configuration,表示启…...

MATLAB 导出可编辑的eps格式图像

任务描述:部分期刊要求提交可编辑的eps格式图像,方便美工编辑对图像进行美化 我试了直接print或者在figure窗口导出,发现导出的文件放到Adobe AI中并不能编辑,经Google找到解决办法: %EPS exportgraphics(gcf,myVect…...

四问带你搞懂 I3C

大家都知道 I2C ,它的全称是 Inter Integrated Circuit ,那 I3C 又是什么? I3C 是 MIPI (Mobile Industry Processor Interface)移动产业处理器接口联盟推出的,全称是 Improved Inter Integrated Circuit &…...

fastjson解析自定义get方法导致空指针问题

背景 为了在日志中把出入参打印出来,以便验证链路和排查问题,在日志中将入参用fastjson格式化成字符串输出,结果遇到了NPE。 问题复现 示例代码 public static void main(String[] args) {OrganizationId orgId new OrganizationId();N…...

github新手用法详解

GitHub是一个非常强大的版本控制工具,它为程序员提供了一个便捷的方式来管理代码、协作开发和参与开源项目。但对于新手来说,可能会觉得GitHub的使用有些复杂。因此,本篇文章将详细介绍GitHub的基本用法,帮助新手快速上手并充分利…...

MAC电脑系统清理空间免费版软件CleanMyMac X2024

大家好,我是那个总是被苹果电脑“内存已满”提示搞得焦头烂额的专业博主。如果你也像我一样,在使用Mac时经常遭遇卡顿、慢吞吞的情况,那么今天的Mac清理空间妙招分享绝对适合你! CleanMyMac X全新版下载如下: https://wm.makedi…...

notepad++运行python闪一下就没啦

问题:Notepad直接快捷键运行Python代码,出现闪一下就没了 解决措施: ①点击菜单运行(Run) --> 运行(Run)弹出的对话框 ②把 cmd /k python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT 粘贴进入这个对话框内 ③点击保存&a…...

基于springboot+vue的课程答疑系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…...

【工具类】非 sudo 运行 docker

非 root 运行 docker 命令 sudo groupadd docker sudo usermod -aG docker $USER newgrp docker sudo chown root:docker /var/run/docker.sock sudo chown "$USER":"$USER" /home/"$USER"/.docker -R sudo chmod grwx "$HOME/.docker&quo…...

力扣49.字母异位词分组

题目描述: 49. 字母异位词分组 难度 中等 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea"…...

git操作--->在远程删除了某个分支,但本地使用git branch -r的时候还是会显示某个分支存在是什么原因

💕又迷糊了哈哈,以为自己命令执行错了,结果可能是缓存的原因:💕 😂如果你发现使用 git branch -r 命令显示了一个远程没有的分支,这可能是由以下几个原因造成的:😂 缓存…...

合并Windows电脑的不同分区(不同的盘)的方法

本文介绍在Windows操作系统的电脑中,将磁盘上的不同分区(例如E盘与F盘)加以合并的方法。 最近,想着将新电脑的2个分区加以合并;如下图所示,希望将E盘与F盘合并为一个分区。本文就介绍一下实现这一需求的具体…...

web前端安全性——iframe安全问题

1、概念 iframe安全问题可称作界面劫持,像点击劫持、拖放劫持、触屏劫持。就是我们的点击,拖放,触屏操作被劫持了,而去操作了其它的透明隐藏的界面。 **原理是利用透明层iframe,使用了CSS中的opacity或z-index等属性,…...

从零开始学习Netty - 学习笔记 - NIO基础 - 网络编程: Selector

4.网络编程 4.1.非阻塞 VS 阻塞 在网络编程中,**阻塞(Blocking)和非阻塞(Non-blocking)**是两种不同的编程模型,描述了程序在进行网络通信时的行为方式。 阻塞(Blocking)&#xff1…...

useRef有什么用?

看一下官网定义 useRef是一个React Hook,它能帮助引用一个不需要渲染的值 这句话透露出一个信息,不需要渲染的值可以用useRef引用,那需要渲染的值用什么引用呢?当然是useState了,需要渲染的值指的就是状态嘛&#xff0…...

vue3中,ref()、reactive()、computed()、watch() 和 watchEffect()的区别

ref()、reactive()、computed()、watch() 和 watchEffect() 是 Vue 3 中常用的响应式处理函数,它们的主要区别如下: ref():ref() 函数用于将一个普通的 JavaScript 值转化为响应式对象。它返回一个具有 value 属性的对象,我们可以…...

Java基于SpringBoot的校园轻博客系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

webstorm光标变成方块解决办法_webstorm光标变粗不能换行

webstorms光标变了 键盘上的insert是切换的快捷键,敲insert就可以来回切换了...

从计网的角度讲明白什么是网关

网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连…...

如何选择最适合的图纸加密软件?安秉网盾软件用户体验及性价比

安秉网盾图纸加密软件是一款功能强大的图纸加密工具,具有以下特点和优势: 全盘加密:安秉网盾采用先进的加密算法,能对文件、文件夹、磁盘等数据进行全面加密,确保数据在存储和传输过程中的安全性。 监控与审计&#x…...

Spring Security学习(六)——配置多个Provider(存在两种认证规则)

前言 《Spring Security学习(五)——账号密码的存取》一文已经能满足一般应用的情况。但实际商业应用也会存在如下的情况:用户提交的账号密码,能在本地的保存的账号密码匹配上,或者能在远端服务认证中匹配上&#xff…...

Js如何判断两个数组是否相等?

本文目录 1、通过数组自带方法比较2、通过循环判断3、toString()4、join()5、JSON.stringify() 日常开发,时不时会遇到需要判定2个数组是否相等的情况,需要实现考虑的场景有: 先判断长度,长度不等必然不等元素位置其他情况考虑 1…...

Salesforce顾问如何拿到更高的薪水?

顾问的角色已经在Salesforce生态系统存在了一段时间,随着Salesforce针对职业发展的Trailhead培训模块的发布,该角色的热度又达到了新的浪潮。越来越多人走上了Salesforce顾问这条职业道路。 当然其薪资水平也非常可观,据调查,美国…...

关于React中的状态和属性

在React中,状态(State)和属性(Props)是两个核心概念,用于管理组件的数据和传递信息。下面详细描述它们的区别: 状态(State): 定义: 状态是组件内部…...