close

Menu

Contact Info

Folow us on social

Running Postgres in Docker

  • Denish Patel
  • 29th November 2016
  • Database, docker, postgresql

For last six months, I have been working on moving Postgres from bare metal & VM based  systems in  Docker. As of today, we have migrated a couple of mission critical Postgres DBs  (~ 2TB) on to Docker environment.

During the migration  journey, I have listed down some of the things to consider running Postgres production instances in to Docker environment.

  1.  Do not use default Postgres Docker image. Start with your own docker image from scratch.
  2.  Handle Postgres service shutdown gracefully in docker with SIGTERM
  3.  OS can be stored in Docker container
  4.  Data volume MUST be stored in persistent storage
  5. Use some kind of framework to manage docker containers
    • Apache Mesos & Aurora
    • OpenStack & Kubernetes
  6.  You can mount NetApp for backups and WAL files on to container
  7.  Make templates for resources for different kind of workloads
    • Aurora job for resource templates
    • postgresql.conf templates
  8.  Use static IPs for services ; DBs, Front end an backend servers
    • It will be easier to control access at container level for better security
    • failover is easy to manage with static IP for master DB server
  9.  Benchmark your existing system and compare with new system
    • Keep eyes on TPS using pgbench and benchmarksql
  10.  Monitoring solution for Postgres DB
    • collectd or other agent based monitoring
      • pg_stat_statements is very useful
    • Docker container should be monitored separately
      •  docker stats
  11.  Backup container for taking backups
  12.  Standby container for setting up standby jobs

I hope it will be useful for someone working on migrating Postgres into Docker environment!

Join the conversation

4 Comments

  1. Would be interesting to hear what your problems were regarding issue #1. Also, are you putting your Dockerfiles online?

    1. No, I haven’t experience any issue but it makes sense to start from scratch to understand the Docker file completely.

      No, I’m not planning to put Docker files online. Sorry.

    1. @Jack

      No. For the container environment, shared storage makes more sense. We are using shared storage i.e CephFS for storing persistent data.

Leave a comment

Your email address will not be published. Required fields are marked *