Acesso ao banco de dados e verificação do banco criado:
Simulação da exclusão do container e perda do acesso ao banco de dados:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7320ee9a320f postgres "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp agitated_chatterjee
$ docker container rm -f 7320ee9a320f
7320ee9a320f
Simulação da criação de container para o mesmo volume com a retomada da conexão ao banco de dados:
$ docker container run -d -e POSTGRES_PASSWORD=123456 -p 5432:5432 --mount type=bind,source="$(pwd)/db_vol",target=/var/lib/postgresql/data postgres
d7d475d9d707547f8c9b3904146b15958b4f69333dae4af7a5a3fbfc0465eb17
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7d475d9d707 postgres "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp hungry_cartwright
Volume (volume gerenciado)
Exclusão do container em execução:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7d475d9d707 postgres "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp hungry_cartwright
$ docker container rm -f d7d475d9d707
d7d475d9d707
Pode ser feito de 2 formas:
Criação do volume utilizando docker volume create
Utilização do mount
Execução de container com mapeamento de volume utilizando o mount:
$ docker container run -d \
-e POSTGRES_PASSWORD=123456 \
-p 5432:5432 \
--mount type=volume,source=container_postgre_vol,target=/var/lib/postgresql/data \
postgres
5511385490c3f0d32427682216e95296b80756fa0f5162c83ca6f882545bd00d
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5511385490c3 postgres "docker-entrypoint.s…" 5 seconds ago Up 5 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp stupefied_taussig
$ docker volume ls
DRIVER VOLUME NAME
local container_postgre_vol
Verificação do acesso ao banco de dados:
O diretório db_vol/ pode ser apagado pois não está mais sendo utilizado, pois o banco de dados está sendo gerenciado:
/tmp/volume/exemplo$ sudo rm -rf db_vol/
[sudo] password for marcelo: