PostgreSQL with Docker: Difference between revisions
Line 13: | Line 13: | ||
command starts a transient Posgres container instance that does not expose any port on the local host, it is initialized on the fly to allow access to any user and uses an [[Docker_Storage_Concepts#Anonymous_Volume|anonymous]] [[Docker_Storage_Concepts#Local_Volume_Driver|local]] volume that will '''not''' be reattached to during the next run. To get a usable Postgres instance we can shut down and restart and that regains access to stored data between restarts, we should use create a dedicated [[Docker_Storage_Concepts#Named_Volume|named volume]] or a [[Docker_Storage_Concepts#Bind_Mount|bind mount]], initialize the database with a username and a password during the first initialization run and map ports to the local host. | command starts a transient Posgres container instance that does not expose any port on the local host, it is initialized on the fly to allow access to any user and uses an [[Docker_Storage_Concepts#Anonymous_Volume|anonymous]] [[Docker_Storage_Concepts#Local_Volume_Driver|local]] volume that will '''not''' be reattached to during the next run. To get a usable Postgres instance we can shut down and restart and that regains access to stored data between restarts, we should use create a dedicated [[Docker_Storage_Concepts#Named_Volume|named volume]] or a [[Docker_Storage_Concepts#Bind_Mount|bind mount]], initialize the database with a username and a password during the first initialization run and map ports to the local host. | ||
= | =Dedicated Storage= | ||
We prefer using a [[Docker_Storage_Concepts#Bind_Mount|bind mount]] as it gives easy access to the stored state, in case we need to troubleshoot. A [[Docker_Storage_Concepts#Named_Volume|named volume]] can be also used. | |||
Create a | Create a | ||
Revision as of 17:30, 18 October 2018
Internal
Overview
In its simplest form:
docker run postgres
command starts a transient Posgres container instance that does not expose any port on the local host, it is initialized on the fly to allow access to any user and uses an anonymous local volume that will not be reattached to during the next run. To get a usable Postgres instance we can shut down and restart and that regains access to stored data between restarts, we should use create a dedicated named volume or a bind mount, initialize the database with a username and a password during the first initialization run and map ports to the local host.
Dedicated Storage
We prefer using a bind mount as it gives easy access to the stored state, in case we need to troubleshoot. A named volume can be also used. Create a
Running a Transient Instance
Postgres binds by default on port 5432 and this is the port published by the following command:
docker run -p 5432:5432/tcp postgres
The command will implicitly create a local anonymous volume that will linger around after the container stops. The data on the anonymous local volume can be accessed by starting the stopped container. Test
You can attach to the container with:
docker exec -it <container-id> bash