docker创建数据库容器并映射存储数据

docker创建数据库容器并映射存储数据

  • 介绍
    • 创建Redis容器
    • 创建PostgresQL容器
    • 创建MySQL容器

介绍

使用Docker创建Redis、PostgresQL、MySQL等数据库容器代码示例。

创建Redis容器

使用Docker创建Redis容器并使用Volume映射存储数据是一个常见的操作。以下是详细的步骤:

  1. 创建一个目录用于存储Redis数据
    首先,创建一个目录用于存储Redis的数据。例如,我们创建一个名为/mydata/redis/data的目录。

    mkdir -p /mydata/redis/data
    

    **PS:**如果需要 Docker volume 来保存 Redis 的数据,执行下面的命令来创建一个名为 redis_data 的 volume:

    docker volume create redis_data
    
  2. 创建并运行Redis容器
    使用Docker命令创建并运行Redis容器,并将本地目录映射到容器内的数据目录。

    docker run -d \--name my-redis \-v /mydata/redis/data:/data \ # 如果是使用docker volume 则改为 -v redis_data:/data-p 6379:6379 \redis redis-server --appendonly yes
    

    解释一下这个命令:

    • -d:以 detached 模式运行容器(后台运行)。
    • --name my-redis:为容器指定一个名称。
    • -v /mydata/redis/data:/data:将本地的/mydata/redis/data目录映射到容器内的/data目录。
    • -p 6379:6379:将容器的6379端口映射到主机的6379端口。
    • redis redis-server --appendonly yes:使用Redis镜像并启动Redis服务器,启用AOF持久化。
  3. 验证容器是否运行
    可以使用以下命令查看容器是否正在运行:

    docker ps
    

    你应该会看到一个名为my-redis的容器正在运行。

  4. 测试Redis连接
    你可以使用redis-cli工具连接到Redis服务器进行测试。

    docker exec -it my-redis redis-cli
    

    这将打开Redis命令行界面,你可以在这里执行Redis命令,例如:

    127.0.0.1:6379> set mykey "Hello, Redis!"
    OK
    127.0.0.1:6379> get mykey
    "Hello, Redis!"
    
  5. 验证数据持久化
    停止并删除容器,然后重新创建容器,验证数据是否仍然存在。

    docker stop my-redis
    docker rm my-redis
    

    重新创建并运行容器:

    docker run -d \--name my-redis \-v /mydata/redis/data:/data \-p 6379:6379 \redis redis-server --appendonly yes
    

    再次连接到Redis并检查数据:

    docker exec -it my-redis redis-cli
    127.0.0.1:6379> get mykey
    "Hello, Redis!"
    

    如果数据仍然存在,说明Volume映射和数据持久化成功。

创建PostgresQL容器

使用Docker创建PostgreSQL容器并使用Volume映射存储数据到本地目录的步骤如下:

  1. 创建一个目录用于存储PostgreSQL数据
    首先,创建一个目录用于存储PostgreSQL的数据。例如,我们创建一个名为/mydata/postgresql/data的目录。

    mkdir -p /mydata/postgresql/data
    

    PS: 如果需要 Docker volume 来保存 MySQL 的数据,执行下面的命令来创建一个名为 postgresql_data 的 volume:

    docker volume create postgresql_data
    
  2. 创建并运行PostgreSQL容器
    使用Docker命令创建并运行PostgreSQL容器,并将本地目录映射到容器内的数据目录。

    docker run -d \--name my-postgresql \-v /mydata/postgresql/data:/var/lib/postgresql/data \ # 如果是使用docker volume 则改为 -v postgresql_data:/data-e POSTGRES_PASSWORD=mysecretpassword \-p 5432:5432 \postgres:latest
    

    解释一下这个命令:

    • -d:以 detached 模式运行容器(后台运行)。
    • --name my-postgresql:为容器指定一个名称。
    • -v /mydata/postgresql/data:/var/lib/postgresql/data:将本地的/mydata/postgresql/data目录映射到容器内的/var/lib/postgresql/data目录。
    • -e POSTGRES_PASSWORD=mysecretpassword:设置PostgreSQL的超级用户密码。
    • -p 5432:5432:将容器的5432端口映射到主机的5432端口。
    • postgres:latest:使用最新版本的PostgreSQL镜像。
  3. 验证容器是否运行
    可以使用以下命令查看容器是否正在运行:

    docker ps
    

    你应该会看到一个名为my-postgresql的容器正在运行。

  4. 测试PostgreSQL连接
    你可以使用psql客户端工具连接到PostgreSQL服务器进行测试。

    docker exec -it my-postgresql psql -U postgres
    

    这将打开PostgreSQL命令行界面,你可以在这里执行SQL命令,例如:

    postgres=# CREATE DATABASE mydatabase;
    CREATE DATABASEpostgres=# \c mydatabase
    You are now connected to database "mydatabase" as user "postgres".mydatabase=# CREATE TABLE mytable (id INT PRIMARY KEY, name VARCHAR(255));
    CREATE TABLEmydatabase=# INSERT INTO mytable (id, name) VALUES (1, 'Hello, PostgreSQL!');
    INSERT 0 1mydatabase=# SELECT * FROM mytable;id |       name       
    ----+-----------------1 | Hello, PostgreSQL!
    (1 row)
    
  5. 验证数据持久化
    停止并删除容器,然后重新创建容器,验证数据是否仍然存在。

    docker stop my-postgresql
    docker rm my-postgresql
    

    重新创建并运行容器:

    docker run -d \--name my-postgresql \-v /mydata/postgresql/data:/var/lib/postgresql/data \-e POSTGRES_PASSWORD=mysecretpassword \-p 5432:5432 \postgres:latest
    

    再次连接到PostgreSQL并检查数据:

    docker exec -it my-postgresql psql -U postgres
    

    执行以下SQL命令:

    postgres=# \c mydatabase
    You are now connected to database "mydatabase" as user "postgres".mydatabase=# SELECT * FROM mytable;id |       name       
    ----+-----------------1 | Hello, PostgreSQL!
    (1 row)
    

    如果数据仍然存在,说明Volume映射和数据持久化成功。

创建MySQL容器

使用Docker创建MySQL容器并使用Volume映射存储数据到本地目录的步骤如下:

  1. 创建一个目录用于存储MySQL数据
    首先,创建一个目录用于存储MySQL的数据。例如,我们创建一个名为/mydata/mysql/data的目录。

    mkdir -p /mydata/mysql/data
    

    PS: 如果需要 Docker volume 来保存 MySQL 的数据,执行下面的命令来创建一个名为 mysql_data 的 volume:

    docker volume create mysql_data
    
  2. 创建并运行MySQL容器
    使用Docker命令创建并运行MySQL容器,并将本地目录映射到容器内的数据目录。

    docker run -d \--name my-mysql \-v /mydata/mysql/data:/var/lib/mysql \ # 如果是使用docker volume 则改为 -v mysql_data:/data-e MYSQL_ROOT_PASSWORD=my-secret-pw \-p 3306:3306 \mysql:latest
    

    解释一下这个命令:

    • -d:以 detached 模式运行容器(后台运行)。
    • --name my-mysql:为容器指定一个名称。
    • -v /mydata/mysql/data:/var/lib/mysql:将本地的/mydata/mysql/data目录映射到容器内的/var/lib/mysql目录。
    • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置MySQL的root用户密码。
    • -p 3306:3306:将容器的3306端口映射到主机的3306端口。
    • mysql:latest:使用最新版本的MySQL镜像。
  3. 验证容器是否运行
    可以使用以下命令查看容器是否正在运行:

    docker ps
    

    你应该会看到一个名为my-mysql的容器正在运行。

  4. 测试MySQL连接
    你可以使用mysql客户端工具连接到MySQL服务器进行测试。

    docker exec -it my-mysql mysql -uroot -p
    

    输入之前设置的密码my-secret-pw,这将打开MySQL命令行界面,你可以在这里执行SQL命令,例如:

    mysql> CREATE DATABASE mydatabase;
    Query OK, 1 row affected (0.01 sec)mysql> USE mydatabase;
    Database changedmysql> CREATE TABLE mytable (id INT PRIMARY KEY, name VARCHAR(255));
    Query OK, 0 rows affected (0.02 sec)mysql> INSERT INTO mytable (id, name) VALUES (1, 'Hello, MySQL!');
    Query OK, 1 row affected (0.01 sec)mysql> SELECT * FROM mytable;
    +----+--------------+
    | id | name         |
    +----+--------------+
    |  1 | Hello, MySQL!|
    +----+--------------+
    1 row in set (0.00 sec)
    
  5. 验证数据持久化
    停止并删除容器,然后重新创建容器,验证数据是否仍然存在。

    docker stop my-mysql
    docker rm my-mysql
    

    重新创建并运行容器:

    docker run -d \--name my-mysql \-v /mydata/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \-p 3306:3306 \mysql:latest
    

    再次连接到MySQL并检查数据:

    docker exec -it my-mysql mysql -uroot -p
    

    输入密码后,执行以下SQL命令:

    mysql> USE mydatabase;
    Database changedmysql> SELECT * FROM mytable;
    +----+--------------+
    | id | name         |
    +----+--------------+
    |  1 | Hello, MySQL!|
    +----+--------------+
    1 row in set (0.00 sec)
    

    如果数据仍然存在,说明Volume映射和数据持久化成功。

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

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

相关文章

云计算环境下的等保测评要点分析

在云计算环境下进行等保测评时,需要关注以下几个关键点: 安全责任共担模型:明确云服务提供商(CSP)与云服务用户(CSU)之间的安全责任划分,确保双方在安全防护上的协同作用。 安全控制…

Web开发:通过Quatz开启定时任务调度的基础demo

一、demo程序 【需求】实现每10分钟输出当前时间到txt文档 using Quartz; using Quartz.Impl; using System; using System.IO; using System.Threading.Tasks;namespace QuartzDemo {class Program{static async Task Main(string[] args){// 创建一个调度程序实例ISchedule…

nacos的配置更改了还要重启服务才生效

optoelectronic:azimuth: 117.1pitch: -3.81distance: 0.25 原写法: import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;import javax.annotation.PostConstruct; import java.math.BigDecima…

J.U.C Review - 基本概念:进程、线程、线程组、优先级

文章目录 进程与线程的故事1.1 进程的诞生对操作系统的要求进一步提高为什么我们要使用多线程? 1.2 上下文切换的故事 Java多线程入门1. 继承Thread类代码示例 2. 实现Runnable接口代码示例 3. Thread类的构造方法和常用方法构造方法常用方法 4. Thread类与Runnable…

数据结构(邓俊辉)学习笔记】串 07——KMP算法:分摊分析

文章目录 1.失之粗糙2.精准估计 1.失之粗糙 以下,就来对 KMP 算法的性能做一分析。我们知道 KMP 算法的计算过程可以根据对齐位置相应的分为若干个阶段,然而每一个阶段所对应的计算量是有很大区别的。很快就会看到,如果只是简单地从最坏的角…

Qt5.14.2 操作PostgreSQL 记录

在Qt5.14.2中操作PostgreSQL数据库. #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError> #include <QDebug>// 初始化数据库连接QSqlDatabase db QSqlDatabase::addDatabase("QPSQL");//qDebug() << "aaaa&qu…

CocosCreator3.8 IOS 构建插屏无法去除的解决方案

CocosCreator3.8 IOS 构建插屏无法去除的解决方案 在实际项目开发过程中&#xff0c;我们通常无需CocosCreator 自带的插屏&#xff0c;一般采用自定义加载页面。 然后在构建IOS 项目时&#xff0c;启用&#xff08;禁用&#xff09;插屏无法操作&#xff0c;如下图所示&#…

运放阻抗和噪声(同相放大器的输入/输出阻抗 + 电压跟随器阻抗 + 噪声 +信噪比)

2024-8-27&#xff0c;星期一&#xff0c;21:03&#xff0c;天气&#xff1a;阴雨&#xff0c;心情&#xff1a;晴。培训终于结束啦&#xff0c;开始轮岗了&#xff0c;看了两天PPT&#xff0c;加油加油&#xff0c;继续学习。 今天继续学习第六章运算放大器&#xff0c;主要学…

第4章 汇编语言和汇编软件

第4章 汇编语言和汇编软件 该章主要介绍了汇编语言和汇编语言编译器的安装和使用。 汇编语言程序 该小节主要介绍了为什么要有汇编语言和汇编语言程序的一些基础写法。 书中有提到CPU有不同的架构&#xff0c;汇编语言有不同的风格&#xff0c;那么不同的CPU架构和不同的汇…

正则表达式——详解

正则表达式是什么&#xff1f; 正则表达式&#xff08;Regular Expression&#xff0c;通常简写为 regex、regexp 或 RE&#xff09;是一种强大的文本处理工具&#xff0c;用于描述一组字符串的模式。它可以用来匹配、查找、替换等操作&#xff0c;几乎所有现代编程语言都支持…

cola_os学习笔记(上)

cola_os的学习笔记 声明 该项目系本人学习项目所做的笔记。该项目的项目地址为cola_os: 300行代码实现多任务管理的OS&#xff0c;在很多MCU开发中&#xff0c;功能很简单&#xff0c;实时性要求不强&#xff0c;如果使用RTOS显得太浪费&#xff0c;任务多了管理不当又很乱&a…

Anaconda3简介与安装步骤

目录 Anaconda3简介与功能 1.Anaconda3简介 2.主要功能和特点 3.使用场景 4.总结 Anaconda3安装 1.Anaconda3下载 1.1我的百度网盘 1.2官网下载 1.2.1访问官网 1.2.2输入邮箱 1.2.3登录你的邮箱下载&#xff08;你的噶&#xff09; 2.安装 2.1双击安装 2.2选择安…

开启创意编程新篇章:Scratch的持续创新与功能拓展

开启创意编程新篇章&#xff1a;Scratch的持续创新与功能拓展 Scratch&#xff0c;这款广受全球儿童和教育工作者喜爱的编程工具&#xff0c;从未停止过创新的步伐。随着技术的发展和用户需求的增长&#xff0c;Scratch团队一直在不断地为其添加新的编程特性和功能。本文将综合…

【Android】如何使用adb抓取Android系统的WiFi日志

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd🌐系列专栏:WLAN技术📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!! 👉关注✨、点赞👍、收藏�…

计算机视觉编程 3(图片处理)

目录 图像差分 高斯差分 形态学-物体计数 ​编辑 图片降噪 图像差分 # -*- coding: utf-8 -*- from PIL import Image from pylab import * from scipy.ndimage import filters import numpy# 添加中文字体支持 from matplotlib.font_manager import FontProperties font…

groovy闭包语法详解(二)

文章目录 线程中的闭包调用自定义闭包重写doCall查找并调用闭包成员闭包中的形参扩展闭包的实参控制 线程中的闭包调用 package com.juan.groovyclass MyThread extends Thread {// 闭包成员变量Closure closureMyThread(Closure c) {this.closure c// 启动线程&#xff0c;运…

数据结构基础.顺序表与链表

数据结构&#xff1a; 1.衡量一个程序是否优秀&#xff1a; 1.时间复杂度&#xff1a; 数据量增长与程序运行时间的比例关系以函数描述称为时间渐进复杂度函数,简称时间复杂度 O(c) > O(logn) > O(n) > O(nlogn) > O(n^2) > O(n^3) > O…

VMWare中添加Ubuntu20.04.06镜像

一、下载Ubuntu镜像 Ubuntu20.04&#xff1a; 官方下载地址https://releases.ubuntu.com/20.04.6/ 进入官网 点击下图红框位置&#xff0c;下载镜像镜像名为ubuntu-20.04.6-desktop-amd64.iso 也可点击下面链接直接下载&#xff1a;https://releases.ubuntu.com/20.04.6/ubu…

车间多台分散PLC如何在不同协议的情况下实现无线通讯?

项目背景 为推动企业智能化数字化升级&#xff0c;积极响应节能减排与能源可持续发展的号召&#xff0c;进一步增强企业竞争力&#xff0c;同时为避免大幅度电缆铺设及维护工作&#xff0c;厂区需要针对目前的燃煤发电作业进行技术及流程的无线改造。通过这些无线技改措施的实施…

2023年最新自适应主题懒人网址导航v3.9php源码

源码简介 这个懒人网址导航源码是一个基于PHPMySQL开发的网址导航系统。该版本是在原有3.8版本的基础上进行了修复和功能增强。我们建议新用户直接使用这个最新版本&#xff0c;放弃旧版本。如果你有二次开发的能力&#xff0c;可以根据更新日志自行进行升级。我们将在后期继续…