文章目录

  • Docker、Docker composer与Docker desktop
  • 一、docker、docker composer、docker desktop
    • 1.1 Docker
    • 1.2 Docker Compose
    • 1.3 Docker Desktop
    • 1.4 三者之间的区别
  • 二、docker desktop的安装和换源
    • 2.1 前期准备
      • WSL2
    • 2.1 Docker Desktop 安装
      • 下载 Docker Desktop
      • 安装 Docker Desktop
    • 2.2 镜像源设置
  • 三、Opengauss数据库的配置
    • 3.1 Opengauss简介
    • 3.2 镜像拉取
    • 3.3 创建容器
    • 3.4 进入数据库
  • 四、通过vscode连接docker环境
    • 4.1 前提条件
    • 4.2 安装 Docker 扩展
    • 4.3 验证连接
  • 五、通过docker管理环境,封装环境成为docker包
    • 5.1 基本步骤
    • 5.2 麻将机实例
      • 5.2.1项目下载
      • 5.2.2 封装环境docker包
        • 创建Dockerfile
        • 构建 Docker 镜像
        • 运行 Docker 容器
        • 运行结果

Docker、Docker composer与Docker desktop

一、docker、docker composer、docker desktop

1.1 Docker

  • 定义和功能 :Docker 是一个开源的应用容器引擎。你可以把它想象成一种“包装”软件的方式。在传统的软件部署环境中,软件运行依赖于各种系统库、配置文件等。如果不小心更改了系统环境,就可能影响软件的正常运行。而 Docker 就像是给软件打造了一个“小房间”,把这些软件以及它需要的所有依赖(比如特定版本的库、配置等)都装在这个房间里。这个“房间”就是一个容器。例如,你有 一个 Python 应用程序,它需要特定版本的 Python 解释器和一些第三方库(如 Numpy、Pandas)。使用 Docker,你可以将这个 Python 应用连同它所需要的 Python 环境和库打包成一个 Docker 镜像。然后,无论是在你的本地开发机器、测试服务器还是生产服务器上,只要安装了 Docker,就可以用这个镜像来启动一个容器,软件就能在这个独立的环境中稳定运行。
  • 优点
    • 隔离性 :每个容器都有自己独立的运行环境,不会互相干扰。就像不同的箱子,里面的东西不会混在一起。
    • 一致性 :无论在什么操作系统(只要支持 Docker)上,容器内的软件运行环境都是一致的。这解决了“在我的机器上可以运行”的问题,避免了因为环境差异导致的软件部署难题。
    • 轻量级 :和虚拟机相比,Docker 容器不需要像虚拟机那样虚拟整个操作系统。它共享宿主机的内核,所以容器启动很快,资源占用也少。

1.2 Docker Compose

  • 定义和功能 :Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。当你的应用程序需要多个服务协同工作时,Docker Compose 就派上用场了。例如,你有一个基于微服务架构的电商系统,包括前端服务(处理用户界面)、后端服务(处理业务逻辑,如订单处理、用户认证等)、数据库服务(存储用户信息、商品信息等)。你可以使用 Docker Compose 来定义这些服务,通过一个 YAML 文件来描述每个服务的配置,包括镜像名称、端口映射、环境变量、挂载的卷等信息。然后,只需要一个命令(docker - compose up),就可以启动所有这些相关联的容器,并且 Docker Compose 会根据你定义的配置来正确地配置它们之间的网络连接等关系。
  • 优点
    • 简化配置 :通过一个文件来定义多个服务的配置,避免了逐个手动去配置和启动容器的繁琐过程。
    • 可复用性 :这个 YAML 文件可以被团队成员共享,或者用于不同的环境(开发、测试、生产等),实现了配置的标准化和可复用性。

1.3 Docker Desktop

  • 定义和功能 :Docker Desktop 是 Docker 为开发者提供的本地开发环境。它是一个集成了 Docker Engine(用于运行容器)、Docker Compose(用于管理多容器应用)、Kubernetes(一个容器编排工具,用于管理大规模的容器集群,这里先简单提一下,后续可能还会深入学习)等工具的软件。它主要是方便开发者在本地机器上快速安装和使用 Docker 相关技术。例如,如果你是一个 Windows 或 Mac 系统的开发者,想要在本地运行和测试基于 Docker 的应用,安装 Docker Desktop 就可以轻松实现。它提供了图形化界面来查看容器、镜像的信息,还可以方便地管理容器的启动、停止等操作。
  • 优点
    • 方便安装和使用 :为不同操作系统的开发者提供了一个易于安装和使用的 Docker 环境。
    • 功能集成 :把多种 Docker 相关工具集成在一起,方便开发者在一个统一的环境中完成开发和测试工作。

1.4 三者之间的区别

  • 功能侧重点不同
    • Docker 是基础,主要关注于容器的创建、运行和管理,它是一个核心的容器引擎。
    • Docker Compose 是在 Docker 基础上,侧重于多容器应用的编排和管理,把多个容器组合成一个完整应用的过程。
    • Docker Desktop 更侧重于提供给开发者一个本地的、易用的 Docker 环境,它包含了 Docker 和 Docker Compose 等工具,方便开发者进行本地开发和测试。
  • 使用场景不同
    • Docker 可以单独使用来运行单个容器。例如,你只需要运行一个简单的 Nginx 服务器来测试网页内容,就可以使用 Docker 来拉取 Nginx 镜像并启动容器。
    • Docker Compose 在需要运行多个相互关联的容器来构成一个应用时使用。比如,在开发一个复杂的分布式系统,涉及多个微服务和数据库等组件时,使用 Docker Compose 来定义和启动这些组件是很方便的。
    • Docker Desktop 主要用于本地开发环境。当你在自己的电脑上进行应用开发,想要使用 Docker 技术来测试和调试应用时,它提供了一个简洁的本地环境。
  • 部署方式不同
    • Docker 可以在服务器等环境中直接部署,用于生产环境的容器运行(当然,也可以在本地运行,但 Docker Desktop 更侧重于本地场景)。
    • Docker Compose 通常是在开发和测试阶段用于编排多容器应用,它依赖于 Docker 来运行容器。在生产环境中,可能还会有更复杂的编排工具,但它在开发阶段是很实用的。
    • Docker Desktop 是安装在本地开发机器上的软件,主要是为了方便开发过程中的容器操作,它本身不是直接用于生产环境中的大规模应用部署。

二、docker desktop的安装和换源

2.1 前期准备

WSL2

  • WSL2(Windows Subsystem for Linux 2)是微软推出的一项功能,它允许用户在 Windows 10 和 Windows 11 操作系统上运行 Linux 二进制可执行文件(ELF 文件)
  • 让你能在 Windows 电脑上直接运行 Linux 程序

WSL是window的子系统,在本机上用命令直接安装会很慢,所以我提供了安装包,在zip中,下载安装就行

2.1 Docker Desktop 安装

下载 Docker Desktop

  • 访问 Docker 官网:https://www.docker.com/。
  • 点击页面上的“Download for Windows - AMD64”按钮,以下载适用于 Windows 系统的 Docker Desktop 安装文件

安装 Docker Desktop

Windows下安装Docker Desktop到非C盘指南

C盘内存充足可以直接点击 Docker Desktop Installer.exe 下载

  • 打开powershell 输入以下指令(路径先建好,再输入指令)
& "D:\load\DockerDesktop\Docker Desktop Installer.exe" install --installation-dir="D:\Program Files\Docker"

D:\load\DockerDesktop\Docker Desktop Installer.exe对应Docker Desktop Installer.exe的保存路径

D:\Program Files\Docker对应目的安装路径

2.2 镜像源设置

在这里插入图片描述

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://docker.chenby.cn","http://mirror.azure.cn","https://dockerpull.org","https://dockerhub.icu","https://hub.rat.dev"]
}

三、Opengauss数据库的配置

3.1 Opengauss简介

OpenGauss 是一款由华为发起并贡献给开源社区的企业级开源关系型数据库,旨在为全球用户提供高性能、高可靠、高安全的数据库服务。它基于 PostgreSQL 进行深度优化和扩展,融合了华为在数据库领域多年的技术积累,支持多核架构、分布式部署、智能运维等特性,适用于金融、电信、政务、能源等对数据安全与业务连续性要求极高的行业场景。

3.2 镜像拉取

高版本(5.x或以上)opengauss EE容器无法在macOS或Windows上正常启动。此时议把镜像换成lite版,将拉取指令切换成(docker pull enmotech/opengauss-lite)

  • 在PowerShell中运行
docker pull enmotech/opengauss-lite

3.3 创建容器

在C盘或者其他盘根目录下创建一个文件夹为opengauss,确保其绝对路径为C:\opengauss”或者D:\opengauss即可。然后在PowerShell中输入如下代码创建容器

docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Dwq@123456 -v D:\opengauss:/var/lib/opengauss -p 15432:5432 enmotech/opengauss-lite

​ 其中name可以自己修改,PASSWORD后的密码()也可以自己设计修改(要求包含大小写字母、普通字符和数字,并且密码长度不少于8位)接下来回到Docker主界面就可以看到新容器已经创建成功了
在这里插入图片描述

3.4 进入数据库

打开cmd 依次输入以下指令

# 先打开docker里的opengause
docker exec -it opengauss bash# 切换用户到omm(登录到超级用户omm)
su - omm# gsql工具通过默认端口5432连接到postgres数据库
gsql -d postgres -p 5432#查看数据库清单
\l  

在这里插入图片描述

四、通过vscode连接docker环境

4.1 前提条件

已安装 VSCode

4.2 安装 Docker 扩展

在这里插入图片描述

4.3 验证连接

  • 新增了一个 图标
  • 右侧显示了容器、镜像
  • 显示错误可能是因为没有打开docker desktop

在这里插入图片描述

启动

在这里插入图片描述

五、通过docker管理环境,封装环境成为docker包

5.1 基本步骤

  1. 创建 Dockerfile:在项目根目录下创建一个名为 Dockerfile 的文件,并编写指令来定义环境。例如,指定基础镜像、安装必要的软件包、设置工作目录等。

  2. 构建 Docker 镜像:在包含 Dockerfile 的目录下,运行 docker build 命令来构建 Docker 镜像。例如:

    docker build -t your-image-name:tag .
    

    其中 -t 参数用于指定镜像的标签,. 表示使用当前目录下的 Dockerfile 进行构建。

  3. 运行 Docker 容器:构建完成后,您可以使用 docker run 命令来启动 Docker 容器。例如:

    docker run -it --name your-container-name your-image-name:tag
    

    -it 参数表示以交互式终端模式运行容器,--name 参数用于指定容器的名称。

5.2 麻将机实例

5.2.1项目下载

1.进入网页直接下载https://github.com/MahjongRepository/tenhou-python-bot?tab=readme-ov-file

2.或者用命令下载

  • 预先建好一个文件夹,我创建了一个文件夹maj位于D:\lab\maj

  • git 命令进行克隆,下载 tenhou-python-bot 项目的代码

    进入文件夹D:\lab\maj后输入以下命令

    git clone https://github.com/MahjongRepository/tenhou-python-bot.git
    
  • 克隆速度过慢或失败,可以尝试使用 GitHub 镜像(如https://ghproxy.com/前缀)

    git clone https://ghproxy.com/https://github.com/MahjongRepository/tenhou-python-bot.git
    

在这里插入图片描述

5.2.2 封装环境docker包

创建Dockerfile

根目录中已包含dockerfile文件,所以不需要自己编写

FROM pypy:3.7-7.3.6-slim
//选择基础镜像:使用 PyPy 3.7 版本(7.3.6 是 PyPy 版本号)的精简版镜像。RUN useradd -ms /bin/bash docker-user
//创建一个名为docker-user的用户,并设置其默认shell为bash
//避免容器以 root 权限运行,提升安全性。WORKDIR /app/
//设置容器内的工作目录为/app,后续操作(如复制文件)都在这个目录下进行。RUN python3 -m pip install pip==21.3
//升级 pip(Python 包管理器)到 21.3 版本,确保安装依赖时更稳定。COPY requirements /requirements
//将本地的requirements文件夹复制到容器的/requirements路径下
//这里通常存放项目需要的依赖包列表RUN pip install --no-cache-dir -r /requirements/dev.txt
//安装dev.txt文件中列出的所有依赖包。
//--no-cache-dir:不保存安装包的缓存,减少镜像体积;
//-r:指定从文件读取依赖列表。COPY ./project .
//将本地的project文件夹内容复制到容器的当前工作目录(/app)下
//这一步把项目代码放进容器里,让容器知道要运行什么程序USER docker-user
//切换到之前创建的docker-user用户运行后续命令和程序
//确保容器不以管理员(root)权限运行,防止恶意操作或文件权限问题
构建 Docker 镜像

在项目根目录下(powershell),使用以下命令来构建 Docker 镜像

docker build -t mahjong_bot .

如果报错

在这里插入图片描述

docker pull pypy:3.7-7.3.6-slim
docker build -t mahjong_bot .
运行 Docker 容器
docker run -it --rm `-v "${PWD}/project:/app" `mahjong_bot `pypy3 bots_battle.py -g 1 --logs

基础参数

docker run -it --rm
参数作用
-i交互式模式(Interactive):保持标准输入流(stdin)开放,允许与容器交互。
-t分配伪终端(TTY):为容器分配一个终端,使命令输出更像在本地终端运行。
--rm自动删除容器:容器退出时自动删除,避免残留无用容器(适合一次性任务)。

卷挂载参数

-v "${PWD}/project:/app"
参数作用
-v挂载卷(Volume):将宿主机(本地电脑)的目录映射到容器内的目录。
${PWD}/project宿主机路径${PWD} 表示当前 PowerShell 工作目录,project 是子目录。
:/app容器内路径:将宿主机的 project 目录挂载到容器的 /app 目录。

镜像与命令参数

mahjong_bot pypy3 bots_battle.py -g 1 --logs
部分作用
mahjong_bot镜像名称:使用之前通过 docker build 构建的镜像。
pypy3Python 解释器:PyPy 3.x 版本(比 CPython 更快)。
bots_battle.py执行的脚本:运行麻将机器人对战的主程序。
-g 1脚本参数:指定对战局数为 1 局(-g--games)。
--logs启用详细日志:记录 Bot 的决策过程(生成 debug_logs 文件夹)。
运行结果

在这里插入图片描述

  • 查看日志

在这里插入图片描述

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

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

相关文章

H5录音、图文视频IndexDB储存最佳实践:用AI生成语音备忘录

引言 早在大学的时候,我就期望做一款属于自己的 APP,可惜那时不懂技术。现在有了技术,但却没有时间。好在 AI 的快速发展终于让我完成了这个愿望。于是,我用半天的时间,用 AI 生成了一个纯前端的 H5 程序:…

简述C++ nlohmann/json 库

目录 JSON概述 nlohmann/json 库的使用 创建json数组/对象 字符串解析(parse反序列化) 数据访问 序列化 文件读写 JSON概述 JSON(JavaScrip Object Notation)是一种轻量级、跨语言的数据交换格式。它基于 ECMAScript 子集,以独立于编程…

定制开发开源AI智能名片与S2B2C商城小程序的内容分发体系构建:基于“1+N“素材复用模型的创新实践

摘要:在数字内容爆炸式增长的当下,本文针对内容分发效率低下的行业痛点,提出基于"定制开发开源AI智能名片S2B2C商城小程序"的一体化解决方案。通过构建"1篇长文10条长视频20条短视频10个平台"的素材复用公式,…

c++26新功能—hive容器

一、容器的演进 科学进步的过程一般来说都是从先解决常用的、迫切的问题开始,然后再逐步解决一些少见不迫切的问题,直到最终解决到认知程度内的诸多问题。举一个网上的例子,以前说咱们无法生产水笔的尖头上的钢球,其实这对于国内…

Kafka 源码剖析:消息存储与协议实现(二)

四、协议实现机制探秘 4.1 生产者协议 4.1.1 消息发送流程 Producer 在向 Kafka 集群发送消息时,首先会根据分区策略选择目标分区 。常见的分区策略有轮询、按消息键的哈希值分区以及自定义分区策略 。如果生产者在发送消息时指定了分区号,那么消息就…

Vue.js 与 TypeScript:最佳实践

1. 引言 Vue.js 是一个渐进式、灵活的 JavaScript 框架,广泛用于构建用户界面和单页应用(SPA)。而 TypeScript 是 JavaScript 的一个超集,添加了静态类型和其他高级特性。将两者结合使用,可以帮助开发者构建更具可维护…

webpack5 css-loader:从基础到原理

webpack 处理样式 webpack本身是不能识别样式资源的,需要借助Loader来帮助webpack解析样式资源,样式资源包括但不限于css/less/sass/scss/styl 未使用样式处理加载器前 运行webpack打包命令 bash npx webpack报错信息如图,提示无法识别css…

【GESP】C++三级练习 luogu-B2096 直方图

GESP C三级练习,一维数组练习,难度★★☆☆☆。 题目题解详见:【GESP】C三级练习 luogu-B2096 直方图 | https://www.coderli.com/gesp-3-luogu-b2096/ 【GESP】C三级练习 luogu-B2096 直方图 | OneCoderGESP C三级练习,一维数组…

【网站内容安全检测】之2:从网站所有URL页面中提取所有外部及内部域名信息

还没写成Go的,用Python吧,稍微慢一点 依赖内容(安装命令pip install -r requirements.txt) requirements.txt aiohttp beautifulsoup44.12.2 tqdm4.66.1 redis5.2.1 motor3.3.1 pymongo4.6.0 chardet提取域名的程序 domain_extractor.py …

【LLaMA-Factory 实战系列】四、API 篇 - 部署推理服务与批量调用实战

【LLaMA-Factory 实战系列】四、API 篇 - 部署推理服务与批量调用实战 1. 引言2. 推理后端的选择与对比3. 部署 API 推理服务3.1 创建 API 配置文件3.2 启动 API 服务3.3 探索交互式 API 文档 4. 编写 Python 脚本进行批量调用4.1 准备工作4.2 批量调用脚本4.3 运行脚本并查看结…

C++工厂模式的作用(工厂方法、Factory Method、Factory Pattern)

文章目录 代码示例工厂的作用1. 对象创建的封装 🏭2. 解耦客户端和具体类 🔗3. 统一的创建入口 🚪4. 隐藏实现细节 🎭 在这个项目中的具体体现总结 代码示例 https://gitee.com/arnold_s/my-learning-test/tree/master/20250610_…

9-C#修改任务管理的名称

C#修改任务管理的名称

Fisco Bcos学习 - 搭建第一个区块链网络

文章目录 一、前言二、环境准备三、安装依赖在 macOS 上安装依赖在 Ubuntu 上安装依赖在 CentOS 上安装依赖 四、创建操作目录并下载安装脚本五、搭建单群组 4 节点联盟链六、启动 FISCO BCOS 链七、检查进程八、检查日志输出 在数字化时代,区块链技术正逐渐成为推动…

可视化图解算法53:表达式求值

牛客网 面试笔试 TOP 101 1. 题目 描述 请写一个整数计算器,支持加减乘三种运算和括号。 数据范围:0≤∣s∣≤100,保证计算结果始终在整型范围内 要求:空间复杂度: O(n),时间复杂度 O(n) 示例1 输入…

小白成长之路-Nginx配置(二)

文章目录 一、localtion配置1.匹配规则2.匹配优先级3.配置案例 二、rewrite1、 语法2、 可写入字段3 配置案例4 if 指令5.sutoindex6. nginx配置中的常用变量 三、配置Nginx状态统计1.下载vts模块2.编译nginx 提示:以下是本篇文章正文内容,下面案例可供参…

Qt的第一个程序

Qt的第一个程序 1.hello world2.使用图形化拖拽方式3.使用C代码的方式3.1.头文件3.2.setText3.3.对象树 4.设计MyLabel5.乱码问题 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀🚀系列专栏&#xff…

图书数据接口

基本说明: 接口地址:http://data.isbn.work/openApi/getInfoByIsbn?isbn{isbn}&appKey{appkey}返回格式:json请求方式:get请求示例:http://data.isbn.work/openApi/getInfoByIsbn?isbn9787513159074&appKey…

MongoDB原理

目录 一、概念 二、架构 2.1 逻辑结构 2.2 数据模型 2.3 存储引擎:WiredTiger 三、事务 一、概念 MongoDB是文档数据库,基本存储单元是 文档(Document),以BSON格式(一种类json的二进制形式&#xff…

《解码音频:从基础到未来的听觉探索》

音频:开启声音世界的大门 在生活的每一个角落,音频如影随形,编织出丰富多彩的听觉体验。清晨,第一缕阳光尚未完全照进房间,手机里温柔的闹钟铃声,将我们从睡梦中轻轻唤醒,开启活力满满的一天。通…

web安全之h2注入系统学习

起初是在N1 Junior 2025 上面碰到一题,考点是h2的sql注入。由于之前没有见过,趁此机会系统学习一番 实验代码 public class H2Inject {public static void main(String[] args) throws Exception{JdbcDataSource dataSource new JdbcDataSource();dataS…