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:声明将在本服务中要使用的一些秘钥、密码文件。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS 函数详解url、min、rgb、blur、scale、rotate、translate等

随着技术的不断进步,CSS 已经从简单的样式表发展成为拥有众多内置函数的强大工具。这些函数不仅增强了开发者的设计能力,还使得样式应用更加动态、灵活和响应式。本文将深入探讨 CSS 常见的 66 个函数,逐一剖析它们的功能和用法,一…

船舶维保管理系统|基于springboot船舶维保管理系统设计与实现(源码+数据库+文档)

船舶维保管理系统目录 目录 基于springboot船舶维保管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、船舶列表 2、公告信息管理 3、公告类型管理 4、维保计划管理 5、维保计划类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、…

Java 学习和实践笔记(17):构造方法(构造器 constructor)

构造方法(构造器 constructor) 它只是用于指明对象的初始化,而不是创造对象。 在每一个类创建完,编译器都会自动做一个无参的构造方法(没有显示出来),因为做了这个,所以new才能自动创建对象。…

AndroidStudio 2024-2-21 Win10/11最新安装配置(Ktlion快速构建配置,gradle镜像源)

AndroidStudio 2024 Win10/11最新安装配置 教程目的: (从安装到卸载) ,针对Kotlin开发配置,gradle-8.2-src/bin下载慢,以及Kotlin构建慢的解决 好久没玩AS了,下载发现装个AS很麻烦,就觉得有必要出个教程了(就是记录一下:嘻嘻) 因…

Go 1.22中值得关注的几个变化

美国时间2024年2月6日,正当中国人民洋溢在即将迎来龙年春节的喜庆祥和的气氛中时,Eli Bendersky[1]代表Go团队在Go官博发文“Go 1.22 is released![2]”,正式向世界宣告了Go 1.22版本的发布! 注:大家可以从Go官网下载G…

零基础学习8051单片机(十五)

本次先看书学习,并完成了课后习题,题目出自《单片机原理与接口技术》第五版—李清朝 答: (1)当 CPU正在处理某件事情的时候,外部发生的某一件事件请求 CPU 迅速去处理,于是,CPU暂时中止当前的工…

Android的ViewModel

前言 在Compose的学习中,我们在可组合函数中使用rememberSaveable​​​​​​​保存应用数据,但这可能意味着将逻辑保留在可组合函数中或附近。随着应用体量不断变大,您应将数据和逻辑从可组合函数中移出。 而在之前的应用架构学习中&…

计算机视觉基础知识(十四)--深度学习开源框架

深度学习框架 Caffetensorflow框架是深度学习的库;编程时需要import 应用优势 框架的出现降低了入门的门槛;不需要从复杂的神经网络开始编写代码;根据需要,使用已有的模型;模型的参数经过训练得到;可以在已有的模型基础上增加自己的layer;在顶端选择自己的分类器和优化算法;…

自然语言处理(NLP)—— 神经网络自然语言处理(2)实际应用

本篇文章的第一部分是关于探索词嵌入(word embedding)向量空间。词嵌入是一种语言模型和文本表示技术,其中单词或短语从词汇表被映射到向量的高维空间中。通过这种方式,可以通过计算向量之间的距离来捕捉单词之间的语义关系。 1.…

unity-firebase-Analytics分析库对接后数据不显示原因,及最终解决方法

自己记录一下unity对接了 FirebaseAnalytics.unitypackage(基于 firebase_unity_sdk_10.3.0 版本) 库后,数据不显示的原因及最终显示解决方法: 1. 代码问题(有可能是代码写的问题,正确的代码如下&#xff…

Vue3之ref与reactive的基本使用

ref可以创建基本类型、对象类型的响应式数据 reactive只可以创建对象类型的响应式数据 接下来让我为大家介绍一下吧! 在Vue3中,我们想让数据变成响应式数据,我们需要借助到ref与reactive 先为大家介绍一下ref如何使用还有什么注意点 我们需…

Elasticsearch:使用 ELSER v2 进行语义搜索

在我之前的文章 “Elasticsearch:使用 ELSER 进行语义搜索”,我们展示了如何使用 ELESR v1 来进行语义搜索。在使用 ELSER 之前,我们必须注意的是: 重要:虽然 ELSER V2 已正式发布,但 ELSER V1 仍处于 [预览…

政安晨:【示例演绎机器学习】(二)—— 神经网络的二分类问题示例 (影评分类)

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正,让小伙伴们一起学习、交流进步! 作者对人工智能…

BTC系列-系统学习铭文(一)-比特币上的NFT

Ordinals协议概况 开源项目: https://github.com/ordinals/ord铭文浏览器: https://Ordinals.com关于Ordinals的BIP: https://github.com/ordinals/ord/blob/master/bip.mediawiki序数理论手册: https://docs.ordinals.com/overview.html 所需的技术积累 Ordinals NFTs 是基…

SQL注入:网鼎杯2018-unfinish

目录 使用dirmap扫描 使用dirsearch扫描 使用acunetix扫描 爆破后端过滤的字符 绕过限制获取数据 这次的进行SQL注入的靶机是:BUUCTF在线评测 进入到主页面后发现是可以进行登录的,那么我们作为一个安全人员,那肯定不会按照常规的方式来…

达梦数据库--DM8两节点DSC集群安装部署(达梦数据库DSC集群搭建)

1 前期规划 系统规划 本地磁盘规划 共享存储规划 DMDSC 集群为了实现多实例同时访问和修改数据,需要数据文件、控制文件和日志文件都放到共享存储上。DM 支持两种共享存储,裸设备和 DMASM,裸设备是未经过格式化的特殊字符设备,…

【MATLAB】 MODWT信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码,请转文末观看代码获取方式~ 展示出图效果 1 MODWT分解算法 MODWT分解算法是一种基于小波变换的信号分解算法,与EWT分解算法类似,它也可以将信号分解为一系列具有不同频率特性的小波分量。但是,MODWT分解算法在小…

2.21学习总结

1.【模板】ST 表 2.Balanced Lineup G 3.景区导游 4.最近公共祖先(LCA) 倍增思想:主要用于LCA问题,RMQ问题。在进行 递推 时,如果 状态空间很大,通常的 线性递推 无法满足 时间 与 空间复杂度 的要求&…

Web基础②nginx搭建与配置

目录 一.Nginx概述 1.定义 2.Nginx模块作用 (1)main模块 (2)stream服务模块 (3)邮件服务模块 (4)第三方模块 (5)events模块 (6&#xff…

程序媛的mac修炼手册-- 如何彻底卸载Python

啊,前段时间因为想尝试chatgpt的API,需要先创建一个python虚拟环境来安装OpenAI Python library. 结果,不出意外的出意外了,安装好OpenAI Python library后,因为身份认证问题,根本就没有获取API key的权限…