Docker技术仓库

news2024/11/18 18:38:00

数据卷

为什么用数据卷?

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台,具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器,包括4个Cortex A73和4个Coretex A53,主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…

Github 2024-02-22 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-02-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4非开发语言项目2Go项目2HTML项目1Dart项目1Vue项目1JavaScript项目1TypeScript项目1 《Hello 算法…

HarmonyOS开发技术全面分析

系统定义 HarmonyOS 是一款 “ 面向未来 ” 、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够…

node版本管理工具之nvm的安装和使用

一、nvm的介绍 1,什么是nvm? nvm是Node Version Manager的简称,即为node版本管理工具 2,为什么要选择使用nvm? nodejs使用的场景越来越多,因为是开源软件,具备大多数开源软件都存在的"…

测试多线程架构的问题

在测试多线程架构时,需要考虑多个方面以确保系统的稳定性和性能。以下是一些关键问题,需要在测试过程中特别关注: 线程同步 多线程环境中,线程同步是非常重要的问题。由于多个线程可能同时访问共享资源,因此需要使用…

启动node服务报错Error: listen EACCES: permission denied 0.0.0.0:5000

启动node服务报错: 解决方案: 将监听端口改成3000或者其他 修改后结果: 参考原文: Error: listen EACCES: permission denied_error when starting dev server: error: listen eacc-CSDN博客

git版本回退在eclipse和命令中的操作

一.背景 老程序员了,熟悉eclipsesvn,git用的不溜。近几年用了git,偶尔修改了某个文件希望放弃本次修改重新恢复到最新版本重新修改。或者回退到某个版本,再修改。记录一下Eclipse中的操作,和命令操作的情况。 二.Ecli…

六、回归与聚类算法 - 线性回归

目录 1、线性回归的原理 1.1 应用场景 1.2 什么是线性回归 1.2.1 定义 1.2.2 线性回归的特征与目标的关系分析 2、线性回归的损失和优化原理 2.1 损失函数 2.2 优化算法 2.2.1 正规方程 2.2.2 梯度下降 3、线性回归API 4、回归性能评估 5、波士顿房价预测 5.1 流…

Java 注解机制解密并发编程的时间之谜:揭开Happens-Before的神秘面纱

优质博文:IT-BLOG-CN 一、简介 为什么需要happens-before原则: 主要是因为Java内存模型 , 为了提高CPU效率,通过工作内存Cache代替了主内存。修改这个临界资源会更新work memory但并不一定立刻刷到主存中。通常JMM会将编写的代码…

2024.4.21

多进程实现拷贝 #include <myhead.h> //定义结构体 typedef struct INFO {const char *src_file;const char *dest_file;int mv;int size;}info_t;//获取源文件的大小并且创建目标文件 int size_creat(const char *src_file,const char *dest_file) {//获取源文件的大小…

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第十二章 C++经验谈(一)

作者对C的基本态度是“练从难处练&#xff0c;用从易处用”&#xff0c;因此本章有几节“负面”的内容。作者坚信软件开发一定要时刻注意减少不必要的复杂度&#xff0c;一些花团锦簇的招式玩不好反倒会伤到自己。作为应用程序的开发者&#xff0c;对技术的运用要明智&#xff…

说一说Eclipse的项目类型和常用项目的区别

Eclipse在新建项目的时候有很多类型&#xff0c;包括Java project、Web project等等&#xff0c;如下&#xff1a; 那么这些项目类型有什么区别呢&#xff1f;我们在创建项目的时候应该如何选择&#xff0c;了解清楚这一点还是非常重要的&#xff0c;但记住一个出发点&#xff…

Simulink算法仿真注意事项

一、背景 首先&#xff0c;需要区分Simulink仿真和FPGA仿真的区别&#xff0c;即使最终算法可能要落地到FPGA上。 Simulink是MATLAB的一个重要组成部分&#xff0c;主要用于建模、仿真等&#xff0c;它可将理论研究和实践有机的相结合&#xff0c;并且用户不需要书写大量的代…

⭐北邮复试刷题LCR 037. 行星碰撞__栈 (力扣119经典题变种挑战)

LCR 037. 行星碰撞 给定一个整数数组 asteroids&#xff0c;表示在同一行的小行星。 对于数组中的每一个元素&#xff0c;其绝对值表示小行星的大小&#xff0c;正负表示小行星的移动方向&#xff08;正表示向右移动&#xff0c;负表示向左移动&#xff09;。每一颗小行星以相…

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

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

基于Jenkins实现的CI/CD方案

基于Jenkins实现的CI/CD方案 前言 最近基于Jenkins的基座&#xff0c;搭建了一套适用于我们项目小组的持续集成环境。现在把流程整理分享出来&#xff0c;希望可以给大家提供一些帮助和思路。 使用到的组件和版本 组件名称组件版本作用Harbor2.7.3镜像仓库Jenkins2.319.2持…

【鸿蒙系统学习笔记】网络请求

一、介绍 资料来自官网&#xff1a;文档中心 网络管理模块主要提供以下功能&#xff1a; HTTP数据请求&#xff1a;通过HTTP发起一个数据请求。WebSocket连接&#xff1a;使用WebSocket建立服务器与客户端的双向连接。Socket连接&#xff1a;通过Socket进行数据传输。 日常…

Adobe将类ChatGPT集成到PDF中

2月21日&#xff0c;全球多媒体巨头Adobe在官网宣布&#xff0c;推出生成式AI助手AI Assistant&#xff0c;并将其集成在Reader 和Acrobat 两款PDF阅读器中。 据悉&#xff0c;AI Assistant的功能与ChatGPT相似&#xff0c;可以基于PDF文档提供摘要、核心见解、基于文档内容&a…

[bing]“gang调度 Kubernetes的并发控制和一致性机制“论点的对应的源码分析

你是一位K8S专家。请分析在Kubernates&#xff08;https://github.com/kubernetes/kubernetes.git&#xff09;项目和调度coscheduling(https://github.com/kubernetes-sigs/scheduler-plugins/tree/master/pkg/coscheduling) 插件中支撑"PodGroup的管理和调度决策涉及到对…

​Fruity Loops Studio21.2.3软件中文版官方功能介绍

​Fruity Loops Studio 21.2 软件功能介绍 一、概述 Fruity Loops Studio&#xff0c;现更名为FL Studio&#xff0c;是一款由Image-Line公司开发的数字音频工作站&#xff08;DAW&#xff09;。该软件广泛用于音乐创作、编曲、录音、混音和制作。FL Studio 21.2是其近期的一…