Docker中的CockroachDB集群

1、拉取镜像

 

docker pull cockroachdb/cockroach:v1.0.2
docker run --rm cockroachdb/cockroach:v1.0.2 version // 确认镜像正常使用

 2、新建网桥

  在单机环境运行多个容器,之间需要使用docker的网桥模式使得容器间能够进行互访,同时保证容器间在外网环境是互相隔离

 

docker network create -d bridge roachnet

 3、启动第一个节点

 

 

docker run -d \
--name=roach1 \
--hostname=roach1 \
--net=roachnet \
-p 26257:26257 -p 8080:8080  \
-v "${PWD}/cockroach-data/roach1:/cockroach/cockroach-data"  \
cockroachdb/cockroach:v1.0.2 start --insecure

    --hostname:容器间通过hostname加入集群

  26257:cockroach默认的端口

  8080:监控UI的端口

 

  -p:映射容器宿主机和容器的端口

  -v:挂载宿主机目录

  start --insecure 在容器内启动节点

4、加入另外节点到集群

 

docker run -d \
--name=roach2 \
--hostname=roach2 \
--net=roachnet \
-v "${PWD}/cockroach-data/roach2:/cockroach/cockroach-data" \
cockroachdb/cockroach:v1.0.2 start --insecure --join=roach1

docker run -d \
--name=roach3 \
--hostname=roach3 \
--net=roachnet \
-v "${PWD}/cockroach-data/roach3:/cockroach/cockroach-data" \
cockroachdb/cockroach:v1.0.2 start --insecure --join=roach1

  --join:容器节点加入集群,通过前面指定的hostname

 

5、集群测试

 

docker exec -it roach1 ./cockroach sql --insecure

 输出:

 

# Welcome to the cockroach SQL interface.
# All statements must be terminated by a semicolon.
# To exit: CTRL + D.

 执行sql:

CREATE DATABASE bank;

CREATE TABLE bank.accounts (id INT PRIMARY KEY, balance DECIMAL);

INSERT INTO bank.accounts VALUES (1, 1000.50);

SELECT * FROM bank.accounts;

 节点1的结果

  +----+---------+
| id | balance |
+----+---------+
|  1 | 1000.50 |
+----+---------+
(1 row)
\q 退出

节点2,节点3:

SELECT * FROM bank.accounts;

 查询结果:

+----+---------+
| id | balance |
+----+---------+
|  1 | 1000.50 |
+----+---------+
(1 row)
\q 退出节点

6、集群监控

启动集群时已管理宿主机的8080端口,可以查看容器

docker ps

 55e09b83cdba        cockroachdb/cockroach:v1.0.2               "/cockroach/cockroach"   40 minutes ago      Up 40 minutes       0.0.0.0:8080->8080/tcp, 0.0.0.0:26257->26257/tcp   roach1

在浏览器中打开地址,http://localhost:8080,本例是在云服务器中执行,所以通过外网查看


Docker中的CockroachDB集群_第1张图片
 至此已成功docker中运行cockroach集群

你可能感兴趣的:(DB,Docker)