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

Docker 在 Windows 系统下的使用指南:数据卷和数据库

Docker 在 Windows 系统下的使用指南:数据卷和数据库

Docker 提供了强大的功能来创建、管理和持久化数据。数据卷是 Docker 中用于存储和管理数据的机制,使得数据能够在容器的生命周期之外持久化。数据库容器可以利用数据卷来持久化数据库文件,确保数据的持久性。本文将介绍如何在 Windows 系统上使用 Docker 来处理数据卷和运行数据库容器。


1. Docker 数据卷

1.1 什么是数据卷?

数据卷是 Docker 提供的一种机制,用于在容器之间共享和持久化数据。数据卷可以保存在宿主机的文件系统中,也可以在多个容器之间共享。

1.2 创建和使用数据卷

创建数据卷
docker volume create myvolume

这个命令会创建一个名为 myvolume 的数据卷。

查看数据卷
docker volume ls
删除数据卷

在删除数据卷之前,请确保它没有被任何容器使用:

docker volume rm myvolume

1.3 在容器中使用数据卷

挂载数据卷到容器
docker run -d -v myvolume:/data --name mycontainer myimage

这个命令将数据卷 myvolume 挂载到容器的 /data 目录中。

挂载宿主机目录到容器

如果你希望将宿主机上的某个目录挂载到容器中,可以使用以下命令:

docker run -d -v C:\path\to\host\dir:/data --name mycontainer myimage

这个命令将宿主机的 C:\path\to\host\dir 目录挂载到容器的 /data 目录中。

2. 在 Docker 中运行数据库

2.1 运行一个 MySQL 数据库容器

拉取 MySQL 镜像
docker pull mysql:latest
运行 MySQL 容器
docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=rootpassword -v mysql-data:/var/lib/mysql mysql:latest

在这个命令中:

  • -d 表示以后台模式运行容器。
  • -p 3306:3306 将宿主机的 3306 端口映射到容器的 3306 端口。
  • --name mysql-container 指定容器的名称。
  • -e MYSQL_ROOT_PASSWORD=rootpassword 设置 MySQL 的 root 密码。
  • -v mysql-data:/var/lib/mysql 将数据卷 mysql-data 挂载到 MySQL 数据目录中。
连接到 MySQL 数据库

可以使用 MySQL 客户端工具(如 MySQL Workbench)连接到数据库:

  • 主机localhost
  • 端口3306
  • 用户名root
  • 密码rootpassword

2.2 运行一个 PostgreSQL 数据库容器

拉取 PostgreSQL 镜像
docker pull postgres:latest
运行 PostgreSQL 容器
docker run -d -p 5432:5432 --name postgres-container -e POSTGRES_PASSWORD=rootpassword -v postgres-data:/var/lib/postgresql/data postgres:latest

在这个命令中:

  • -d 表示以后台模式运行容器。
  • -p 5432:5432 将宿主机的 5432 端口映射到容器的 5432 端口。
  • --name postgres-container 指定容器的名称。
  • -e POSTGRES_PASSWORD=rootpassword 设置 PostgreSQL 的 root 密码。
  • -v postgres-data:/var/lib/postgresql/data 将数据卷 postgres-data 挂载到 PostgreSQL 数据目录中。
连接到 PostgreSQL 数据库

可以使用 PostgreSQL 客户端工具(如 pgAdmin)连接到数据库:

  • 主机localhost
  • 端口5432
  • 用户名postgres
  • 密码rootpassword

3. Docker Compose 配置

Docker Compose 使得配置和管理多容器应用变得更加容易。以下是一个包含数据卷和数据库的 Docker Compose 示例配置。

3.1 创建 docker-compose.yml

version: '3'
services:web:image: nginxports:- "8080:80"volumes:- web-data:/usr/share/nginx/htmldb:image: postgres:latestenvironment:POSTGRES_PASSWORD: rootpasswordvolumes:- postgres-data:/var/lib/postgresql/dataports:- "5432:5432"volumes:web-data:postgres-data:

在这个配置文件中:

  • web 服务使用 Nginx 镜像,并将数据卷 web-data 挂载到容器的 /usr/share/nginx/html 目录。
  • db 服务使用 PostgreSQL 镜像,并将数据卷 postgres-data 挂载到 PostgreSQL 数据目录。

3.2 启动服务

docker-compose.yml 文件所在目录中运行:

docker-compose up

3.3 停止服务

docker-compose down

4. 常见问题与解决

4.1 数据卷数据丢失

如果数据丢失,检查以下几点:

  • 确保容器正在使用正确的数据卷。
  • 确保数据卷没有被错误地删除或重新创建。

4.2 容器无法连接到数据库

确保:

  • 数据库服务正在运行。
  • 数据库端口正确映射。
  • 数据库配置(如用户名、密码)正确。

通过以上指南,你应该能够在 Windows 系统上使用 Docker 进行数据卷的管理和数据库容器的配置。Docker 的数据卷和数据库容器使得应用的开发和部署变得更加灵活和高效。如果有更多问题或需要进一步的帮助,请随时提问!

相关文章:

Docker 在 Windows 系统下的使用指南:数据卷和数据库

Docker 在 Windows 系统下的使用指南:数据卷和数据库 Docker 提供了强大的功能来创建、管理和持久化数据。数据卷是 Docker 中用于存储和管理数据的机制,使得数据能够在容器的生命周期之外持久化。数据库容器可以利用数据卷来持久化数据库文件&#xff…...

[数据集][目标检测]轴承缺陷划痕检测数据集VOC+YOLO格式1166张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1166 标注数量(xml文件个数):1166 标注数量(txt文件个数):1166 标注…...

将本地微服务发布到docker镜像二:

上一篇文章我们介绍了如何将一个简单的springboot服务发布到docker镜像中,这一篇我们将介绍如何将一个复杂的微服务(关联mysql、redis)发布到docker镜像。 我们将使用以下两种不同的方式来实现此功能。 redis、mysql、springboot微服务分开…...

前端构建工具|vite快速入门

认识vite vite组成部分 Vite是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成: 一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。一…...

拯救PyCharm:击退IDE内存泄漏的策略

拯救PyCharm:击退IDE内存泄漏的策略 PyCharm,作为一款功能强大的集成开发环境(IDE),在处理大型项目或长时间开发过程中,可能会遇到内存泄漏的问题,导致IDE运行缓慢甚至崩溃。本文将提供一系列解…...

在vue3的开发环境中为什么使用vite而不是用webpack

1、vite在开发阶段没有打包过程,直接启动一个服务器 2、请求一个模块到开发服务器 3、开发服务器编译模块,根据页面用所需要的依赖去加载文件 4、加载完成后,开发服务器把编译的结果返回给页面 这使得提高了我们在开发阶段运行的效率 vite是…...

mybatis结合generator进行分页插件PluginAdapter开发

mybatis结合generator生成的代码没有分页的功能,可以尝试自己继承分页插件PluginAdapter,进行开发,实现自己的分页插件这样generator生产的代码 带分页功能了。 MyBatis MySQL自动生成带分页插件 继承PluginAdapter类,实现相关方…...

面试:ArrayList和LinkedList

ArrayList和LinkedList是什么? ArrayList: ArrayList是Java集合框架中的一个类,它实现了List接口,底层基于数组实现。ArrayList的特点是支持动态数组,可以自动扩容,适合顺序访问和随机访问。LinkedList&am…...

【uniapp】uniapp+vue2微信小程序实现分享功能

uniappvue2做的微信小程序实现分享功能 问题描述 uniappvue2做的微信小程序,发布以后点击右上角三个点,分享小程序的时候,转发和分享按钮都是灰色 解决方案 转发、分享、复制链接这几个功能需要自己来手动写方法,考虑到每个页…...

WEB渗透Web突破篇-目录爆破

开源 工具名称下载地址工具描述cansinahttps://github.com/deibit/cansina网站的敏感目录发掘工具Cewlcewl | Kali Linux Tools你可以给它的爬虫指定URL地址和爬取深度,接下来Cewl会给你返回一个字典文件dirsearchhttps://github.com/maurosoria/dirsearch目录扫描…...

Windows设备文件同步平台

使用咨询: 扫码添加QQ 永久免费: Gitee下载最新版本 使用说明: CSDN查看使用说明 功能: 定时(全量采集or增量采集) SCADA,MES等系统采集工控机,办公电脑文件. 优势1: 开箱即用. 解压直接运行.插件集成下载. 优势2: 批管理设备. 配置均在后台配置管理. 优势3: 无人值守 采集端…...

用九方智投学习机,学会应对回撤风险

(九方智投属于九方智投控股有限公司(9636.HK)旗下品牌)      近期国内海风项目密集落地,行业景气度提升。2023年下半年以来,各省加快建设“十四五”规划,我国海风建设重新迈入快车道&#x…...

maven打包加入本地jar包

在使用maven打包的过程中&#xff0c;有时候我们需要添加一些本地的jar包&#xff0c;并将其打到jar包的lib中。 首先将需要本地的jar包&#xff0c;放到项目的的src/resources/lib下面。 然后在对应的项目的pom中加入一下依赖&#xff1a; <dependency><groupId>…...

从TiDB迁移到OceanBase的实践分享

本文来自OceanBase热心用户的分享 近期&#xff0c;我们计划将业务数据库从TiDB迁移到OceanBase&#xff0c;但面临的一个主要挑战是如何更平滑的完成这一迁移过程。经过研究&#xff0c;了解到OceanBase提供的OMS数据迁移工具能够支持从TiDB到OceanBase的迁移&#xff0c;并且…...

DL00765-光伏故障检测高分辨率无人机热红外图像细粒度含数据集4000+张

光伏发电作为清洁能源的重要组成部分&#xff0c;近年来得到了广泛应用。然而&#xff0c;随着光伏电站规模的扩大&#xff0c;光伏组件在运行过程中可能会出现各种故障&#xff0c;如热斑、遮挡、接线盒故障等。这些故障不仅会影响光伏电站的发电效率&#xff0c;还可能导致更…...

CICD流水线

一、CICD流水线简介 CICD概念 CI/CD流水线是现代软件开发的一个核心概念&#xff0c;它涉及自动化和管理软件从开发到部署的整个生命周期 概念定义 具体有三点&#xff1a;持续集成、持续交付、持续部署 流水线组成为&#xff1a;代码提交、测试、构建、部署、结果通知 二…...

Sass/Scss基础

安装sass npm install -g sass Sass/Scss释义 ASS版本3.0之前的后缀名为.sass&#xff0c;而版本3.0之后的后缀名.scss。 Sass (Syntactically Awesome Stylesheets) 是一个最初由 Hampton Catlin 设计并由 Natalie Weizenbaum 开发的层叠样式表语言。 Sass 是一个由buby语言编…...

【sx sb sz】Centos/Linux sx、sb、sz命令详细介绍

简介 系统版本&#xff1a;Centos7.6 软件版本&#xff1a;lrzsz 0.12.20 sx、sb、sz命令属于lrzsz程序的内容&#xff0c;是使用纠错协议&#xff08;ZMODEM、YMODEM、XMODEM&#xff09;通过拨号串行端口将一个或多个文件发送到在 PC-DOS、CP/M、Unix、VMS 及其他操作系统下运…...

【网络层】IP报文解析和网段划分

文章目录 网络层的作用IP协议协议报头格式网段划分DHCPCIDR划分方案 IP地址的数量限制私有IP地址和公网IP地址LAN和WAN 路由 网络层的作用 前面学习了应用层和传输层&#xff0c;应用层的作用是为用户和应用程序提供网络服务&#xff0c;传输层的作用是提供端口到端口的通信服…...

[GXYCTF2019]禁止套娃1

打开题目 进行常规的检测漏洞&#xff0c;扫描目录发现存在.git文件夹下的文件存在 <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])) { if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

npm install 相关命令

npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖&#xff08;默认&…...