Windows 下的 Docker 部署

本文包含在 Windows 10 中通过 Docker Desktop 和 Hyper -V 部署运行 YMatrix 的主要步骤,整个安装过程可能需要重启系统两次。

1. 启用 Hyper-V:

1.1 命令行方式启用 Hyper-V

右键开始菜单并以管理员身份运行 PowerShell ,执行命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

1.2 图形界面启用 Hyper -V

打开 Windows 设置,点击进入“应用” 1

在“应用与功能”窗口右侧点击相关设置“程序与功能” 2

点击“启动或关闭 Windows 功能” 3

勾选启用 Hyper -V

4

点击确定按钮,等待 Windows 更新完成,重启电脑 5

2. 安装 Docker Desktop

Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows

(注意:此版本仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版。)

2.1 安装

一路 Next,点击 Finish 完成安装 6 7 8

如果按照过程中遇到下面的问题,请点击提示框的链接 9

按照页面中的提示,点击下图中链接(黄色部分),下载安装 wsl2 的 Linux kerne 更新包,并按照提示重启电脑。 10

2.2 启动 Docker Desktop

如看到如下界面,即表示安装启动成功。 11

另外,在 Windows 服务列表中也可以看到“Docker Desktop Service” 12

3. 部署 YMatrix Docker

3.1 确认 Docker 安装成功

在 Windows 中以管理员身份运行 PowerShell 或者 CMD,执行 docker --version,确认 docker 命令能正常运行。

13

3.2 拉取 YMatrix Docker镜像

在 PowerShell 或者 CMD 命令行中执行:

docker pull matrixdb/centos7_demo

14

3.3 运行容器

docker run -it -p 5432:5432 --name mxdemo matrixdb/centos7_demo

主要参数说明:

  • -i:以交互模式运行容器,通常与 -t 同时使用;
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
  • -d: 后台运行容器,并返回容器ID;
  • --name: 为容器指定一个名称

3.4 修改授权文件

修改 pg_hba.conf 配置文件,允许从外部通过用户名密码访问数据库。

vi /home/mxadmin/data/master/gpseg-1/pg_hba.conf

在最后一行增加:

host    all     all     0.0.0.0/0       md5

15

修改完成后,你需要根据数据库软件版本选择以下其中一种命令,重新加载配置文件,使其生效。

 mxstop -u # YMatrix 5
 gpstop -u # YMatrix(MatrixDB) 4

3.5 修改密码并创建测试库

[mxadmin@2e807ee654a2 ~]$ psql -d postgres
psql (12)
Type "help" for help.
postgres=# alter role mxadmin with password 'mxadmin';
ALTER ROLE
postgres=# create database testdb;
CREATE DATABASE

3.6 退出 Docker 容器

因为当前会话为创建容器时的会话,直接输入 exit 退出容器命令行会导致运行的 Docker 容器停止。

正确方法是使用 CTRL+D 命令退出,或者直接关闭 PowerShell 的窗口。

4. 访问 Docker / YMatrix 常用操作

4.1 启动已经创建的 Docker 容器

使用 docker start 命令加 CONTAINERID 启动容器,注意 CONTAINERID 只写前面 4 位字符即可。

使用 docker ps 命令查看 CONTAINERID,并启动:

PS C:\Users\PaulWang> docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS                     PORTS     NAMES
2e807ee654a2   matrixdb/centos7_demo   "/home/mxadmin/entry…"   33 minutes ago   Exited (0) 2 minutes ago             mxdemo
PS C:\Users\PaulWang> docker start 2e80
2e80

也可以在 Docker Desktop 图形界面中点击 start 按钮启动容器。 16

4.2 进入容器

使用 root 账户登录:

docker exec -it 2e87 /bin/bash

使用 mxadmin 账户登录:

docker exec -it -u mxadmin 2e87 /bin/bash

4.3 管理数据库

如下管理命令用来管理数据库(注意:要使用 mxadmin 账户):

  • mxstate:查看当前数据库的状态
  • mxstart -a:启动数据库
  • mxstop -a:停止数据库
  • mxstop -a -M fast:快速停止数据库

    注意!
    YMatrix 5 默认启用新运维工具:mxstartmxstopmxstate

4.4 容器中使用 psql 访问数据库

[mxadmin@2e807ee654a2 /]$ psql -d testdb
psql (12)
Type "help" for help.
testdb=# create table tb1(id int,name varchar(20)) distributed by(id);
CREATE TABLE

4.5 停止运行的容器

使用 docker stop 加 CONTAINERID 命令来停止运行中的容器:

PS C:\Users\PaulWang> docker stop 2e80
2e80

也可在 Docker Desktop 的图形界面,点击 stop 按钮停止 Docker 容器。 17

5. 使用客户端工具访问 YMatrix

本文演示如何使用 DBeaver 访问 YMatrix。 先从官网下载社区版。

5.1 新建连接

连接类型选择“PostgreSQL”: 18

5.2 填写连接信息

填写数据库连接信息,包括用户名和密码。 (注意,在本例中已将 Docker 容器的端口映射到了 Windows 服务器,所以这里的 IP 地址可以直接填写 localhost) 19

在 PostgreSQL 标签页,勾选“显示非缺省的数据库”。 20

点击“测试连接”,或者“确定”完成连接配置。