Replica Set with Percona MongoDB on Docker

Hi all!

It’s possible to run a cluster of mongodb in replica set with docker edition?

If yes, can anyone help me?

Many thanks

Hi. There isn’t any docker solution for a whole cluster from MongoDB (or Percona). There are single-container images, but those are stand-alones.

This next part is conjecture, but I think the crowd that liked Docker moved on Kubernetes instead over the last couple of years, so I wouldn’t expect there to be any movement with Docker + MongoDB coming in the future.

Kubernetes on the other hand is adjusting towards having the operators that will work for distributed databases.

Percona’s Kubernetes Operator for MongoDB already supports a (non-sharded) replicaset of 3+ nodes. MongoDB currently support a Kubernetes image that installs Ops Manager agents, but that is Ops Manager (paid product) that controls the mongod nodes, not Kubernetes.

Sharded cluster topology support in Percona’s Kubernetes Operator for MongoDB is coming. [URL][K8SPSMDB-121] Add support for multiple shards - Percona JIRA

I’m trying to execute mongodb with this config:

services:
mongo:
image: percona/percona-server-mongodb
command: --dbpath=/data/db -profile=2 -slowms=200 -rateLimit=100 --keyFile /data/keyfile --replSet rs0 --bind_ip localhost,10.1.0.15

restart: always
ports:

  • “27017:27017”
    environment:
    MONGO_INITDB_ROOT_USERNAME: xxxx
    MONGO_INITDB_ROOT_PASSWORD: xxxx
    volumes:
  • ./mongodb/:/data/db
  • ./security.keyfile:/data/keyfile

keyfile with correct permissions, etc.

When I try to start only with bindip = localhost, mongodb starts correctly.

But when I add another node, I have the next error:

mongo_1 | + exec mongod --dbpath=/data/db -profile=2 -slowms=200 -rateLimit=100 --keyFile /data/keyfile --replSet rs0 --bind_ip localhost,10.1.0.14 --auth --sslMode disabled
mongo_1 | 2019-10-14T15:06:59.603+0000 I STORAGE [main] Max cache overflow file size custom option: 0
mongo_1 | 2019-10-14T15:06:59.606+0000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols ‘none’
mongo_1 | 2019-10-14T15:06:59.622+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=mongodb-2
mongo_1 | 2019-10-14T15:06:59.623+0000 I CONTROL [initandlisten] db version v4.0.12-6
mongo_1 | 2019-10-14T15:06:59.623+0000 I CONTROL [initandlisten] git version: da989eba899f9163ee9e3591bda7084d5217d4ed
mongo_1 | 2019-10-14T15:06:59.624+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2k-fips 26 Jan 2017
mongo_1 | 2019-10-14T15:06:59.624+0000 I CONTROL [initandlisten] allocator: tcmalloc
mongo_1 | 2019-10-14T15:06:59.625+0000 I CONTROL [initandlisten] modules: none
mongo_1 | 2019-10-14T15:06:59.625+0000 I CONTROL [initandlisten] build environment:
mongo_1 | 2019-10-14T15:06:59.625+0000 I CONTROL [initandlisten] distarch: x86_64
mongo_1 | 2019-10-14T15:06:59.625+0000 I CONTROL [initandlisten] target_arch: x86_64
mongo_1 | 2019-10-14T15:06:59.625+0000 I CONTROL [initandlisten] options: { net: { bindIp: “localhost,10.1.0.14”, ssl: { mode: “disabled” } }, operationProfiling: { mode: “all”, rateLimit: 100, slowOpThresholdMs: 200 }, replication: { replSet: “rs0” }, security: { authorization: “enabled”, keyFile: “/data/keyfile” }, storage: { dbPath: “/data/db” } }
mongo_1 | 2019-10-14T15:06:59.626+0000 E STORAGE [initandlisten] Failed to set up listener: SocketException: Cannot assign requested address
mongo_1 | 2019-10-14T15:06:59.626+0000 I CONTROL [initandlisten] now exiting
mongo_1 | 2019-10-14T15:06:59.626+0000 I CONTROL [initandlisten] shutting down with code:48