利用docker-compose搭建单机mongodb复制集上
docker-compose介绍
docker-compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 docker-compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
此篇文章使用docker-compose步骤为:
- 安装 docker-compose
安装docker-compose 有许多方式,这里通过python3的pip安装docker-compose
pip install https://mirrors.aliyun.com/pypi/simple/ docker-compose
这里使用阿里云源,以加速下载速度
- 编写docker-compose配置文件
创建文件
mkdir mongorst
touch docker-compose.yml
因为配置文件太长,附到文章末尾
这里创建未开启验证的7个节点,
提前创建用于存放数据目录
mkdir /data/mongo{1,2,3,4,5,6,7}/
其中:
| 字段 | 含义 |
|---|---|
| image | 镜像 |
| hostname | 主机名 |
| expose | 暴露端口 |
| ports | 把端口映射到宿主机上 |
| container_name | 容器名称 |
| volumes | 把容器数据挂载到宿主机上 |
| command | 覆盖容器启动的默认命令 |
| net | 设置网络模式 |
- 启动所有容器
直接用docker-compose工具,一建启动配置文件定义的所有容器
docker-compose up -d
其中:
|字段|含义| |up|启动并创建容器| |d|交给后台启动|

查看运行容器
docker-compose ps

docker-compose配置文件
mongo1:
image: mongo:latest
hostname: mongo1
expose:
- 27017
ports:
- "27017:27017"
container_name: mongo1
volumes:
- /data/mongodb1/:/data/db
command: mongod --replSet mongoset
net: "mongonet"
mongo2:
image: mongo:latest
hostname: mongo2
expose:
- 27017
container_name: mongo2
volumes:
- /data/mongodb2/:/data/db
command: mongod --replSet mongoset
net: "mongonet"
mongo3:
image: mongo:latest
hostname: mongo3
expose:
- 27017
container_name: mongo3
volumes:
- /data/mongodb3/:/data/db
command: mongod --replSet mongoset
net: "mongonet"
mongo4:
image: mongo:latest
hostname: mongo4
expose:
- 27017
container_name: mongo4
volumes:
- /data/mongodb4/:/data/db
command: mongod --replSet mongoset
net: "mongonet"
mongo5:
image: mongo:latest
hostname: mongo5
expose:
- 27017
container_name: mongo5
volumes:
- /data/mongodb5/:/data/db
command: mongod --replSet mongoset
net: "mongonet"
mongo6:
image: mongo:latest
hostname: mongo6
expose:
- 27017
container_name: mongo6
volumes:
- /data/mongodb6/:/data/db
command: mongod --replSet mongoset
net: "mongonet"
mongo7:
image: mongo:latest
hostname: mongo7
expose:
- 27017
container_name: mongo7
volumes:
- /data/mongodb7/:/data/db
command: mongod --replSet mongoset
net: "mongonet"