Обсуждение: [ADMIN] PostgreSQL on Docker

Поиск
Список
Период
Сортировка

[ADMIN] PostgreSQL on Docker

От
Dhandapani Shanmugam
Дата:
Hi Gurus,

Please advise running a PostgreSQL transactional database in a Docker container is advisable? I am more concerned if there will be any performance impact on running heavy loaded transaction on PostgreSQL deployed on Docker. 

-Dhandapani Shanmugam

Re: [ADMIN] PostgreSQL on Docker

От
Johannes Truschnigg
Дата:
On Sun, Feb 12, 2017 at 11:36:48AM +0530, Dhandapani Shanmugam wrote:
> Hi Gurus,
>
> Please advise running a PostgreSQL transactional database in a Docker
> container is advisable? I am more concerned if there will be any
> performance impact on running heavy loaded transaction on PostgreSQL
> deployed on Docker.

Sure you CAN run an embarassingly stateful system like a RDBMS on a
containerization platform designed to run stateless,
throw-away-and-rebuild-on-a-whim-type services - but the question is, why
would you? What specific problem are you hoping to solve by doing so?

This considered, performance by having Docker (or any other means of
technology that uses Linux namespace- and cgroup-subsystems) in the mix
PROBABLY won't suffer noticeably, UNLESS you get bitten by problems lurking in
the pieces of the puzzle that are storage drivers (AUFS and friends) and
enable container networking, which is not unheard of.

--
with best regards:
- Johannes Truschnigg ( johannes@truschnigg.info )

www:   https://johannes.truschnigg.info/
phone: +43 650 2 133337
xmpp:  johannes@truschnigg.info

Please do not bother me with HTML-email or attachments. Thank you.

Вложения

Re: [ADMIN] PostgreSQL on Docker

От
Feike Steenbergen
Дата:
On 12 February 2017 at 16:08, Johannes Truschnigg <johannes@truschnigg.info> wrote:
> Sure you CAN run an embarassingly stateful system like a RDBMS on a
> containerization platform designed to run stateless,

Running (Docker) containers does not necessitate running stateless, many
properties of Docker are very useful for stateful systems, I'm thinking of
- isolation between environments
- deploying tested and verified Docker images
- allowing your developers to use the same Docker image as production

> the pieces of the puzzle that are storage drivers (AUFS and friends) and
> enable container networking, which is not unheard of.

An example of a pattern that avoids these issues, but does give you the
isolation and deployment benefits is:

- run 1 container on 1 node
- use bind mounts
- use --net=host

e.g.: docker run -ti -v /pgdata/abc:/var/lib/postgresql/data --net=host postgres

I'm still on the fence whether or not running PostgreSQL inside containers is
advisable or not, I've actively ran many instances successfully without any
major issues. I'm currently thinking that if you run a lot of small databases
for many teams (a Database as a Service) it would be valueable. If you however
want to squeeze all the performance out of your single large database it might
not be the best way of running your system.

regards,

Feike

Re: [ADMIN] PostgreSQL on Docker

От
Dhandapani Shanmugam
Дата:
Thank You Feike and Johannes

On Tue, Feb 14, 2017 at 7:24 PM, Feike Steenbergen <feikesteenbergen@gmail.com> wrote:
On 12 February 2017 at 16:08, Johannes Truschnigg <johannes@truschnigg.info> wrote:
> Sure you CAN run an embarassingly stateful system like a RDBMS on a
> containerization platform designed to run stateless,

Running (Docker) containers does not necessitate running stateless, many
properties of Docker are very useful for stateful systems, I'm thinking of
- isolation between environments
- deploying tested and verified Docker images
- allowing your developers to use the same Docker image as production

> the pieces of the puzzle that are storage drivers (AUFS and friends) and
> enable container networking, which is not unheard of.

An example of a pattern that avoids these issues, but does give you the
isolation and deployment benefits is:

- run 1 container on 1 node
- use bind mounts
- use --net=host

e.g.: docker run -ti -v /pgdata/abc:/var/lib/postgresql/data --net=host postgres

I'm still on the fence whether or not running PostgreSQL inside containers is
advisable or not, I've actively ran many instances successfully without any
major issues. I'm currently thinking that if you run a lot of small databases
for many teams (a Database as a Service) it would be valueable. If you however
want to squeeze all the performance out of your single large database it might
not be the best way of running your system.

regards,

Feike