- Запустить вашу любимую базу данных в докере,
- Подключиться к ней, создать там пару таблиц, сделать в них пару записей.
- Выйти, остановить и удалить контейнер (не образ).
- Запустить контейнер заново. Убедиться, что таблицы и записи с них на месте.
docker run --name hw_postgres --rm -p 1000:5432 -v ~/database_directory:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres:13-alpine
OUTPUT:
Unable to find image 'postgres:13-alpine' locally
13-alpine: Pulling from library/postgres
188c0c94c7c5: Pull complete
56f1d1b70e7f: Pull complete
9b4f01476d2b: Pull complete
354372ef1765: Pull complete
9b2c2c47ed52: Pull complete
4a51019c1737: Pull complete
a73459c934ba: Pull complete 49a02dcc4168: Pull complete
Digest: sha256:42c1b84839db8f78bb66b3d6f300a88a8517895454df4a1cb2f101dfae609769
Status: Downloaded newer image for postgres:13-alpine
48323346ae9aedf58761246c8de4f7d5be73170bc2236a89a4072da517afa5ee
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83600b86a602 postgres:13-alpine "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:1000->5432/tcp hw_postgres
$ docker exec -it hw_postgres bash
bash-5.0# psql -U postgres
psql (13.1)
Type "help" for help.
postgres=# \d
Did not find any relations.
postgres=# CREATE TABLE users (login varchar);
CREATE TABLE
postgres=# \d
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | users | table | postgres
(1 row)
postgres=# INSERT INTO users (login) VALUES ('new_user');
INSERT 0 1
postgres=# INSERT INTO users (login) VALUES ('new_user2');
INSERT 0 1
postgres=# SELECT * FROM users;
login
-----------
new_user
new_user2
(2 rows)
postgres=# CREATE TABLE documents (number int);
CREATE TABLE
postgres=# \d
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+----------
public | documents | table | postgres
public | users | table | postgres
(2 rows)
postgres=# INSERT INTO documents (number) VALUES (123456);
INSERT 0 1
postgres=# INSERT INTO documents (number) VALUES (654321);
INSERT 0 1
postgres=# SELECT * FROM documents;
number
--------
123456
654321
(2 rows)
postgres-# \q
bash-5.0# exit
exit
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48323346ae9a postgres:13-alpine "docker-entrypoint.s…" 36 minutes ago Up 36 minutes 5432/tcp hw_postgres
$ docker container stop hw_postgres
hw_postgres
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker run --name hw_postgres --rm -p 1000:5432 -v ~/database_directory:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres:13-alpine
be02ba6f2e16d0c439539cc7f5437f95f84c9b01e9a1c88604c8fb7ef4abefe6
$ docker exec -it hw_postgres bash
bash-5.0# psql -U postgres
psql (13.1)
Type "help" for help.
postgres=# \d
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+----------
public | documents | table | postgres
public | users | table | postgres
(2 rows)
postgres=# SELECT * FROM documents;
number
--------
123456
654321
(2 rows)
postgres=# SELECT * FROM users;
login
-----------
new_user
new_user2
(2 rows)
psql -h 0.0.0.0 -p 1000 -U postgres