Skip to content

Instantly share code, notes, and snippets.

@iL53n
Last active December 9, 2020 13:00
Show Gist options
  • Save iL53n/436d2d696ccabeec113692f4c075cb08 to your computer and use it in GitHub Desktop.
Save iL53n/436d2d696ccabeec113692f4c075cb08 to your computer and use it in GitHub Desktop.
Docker_HW_01

Задание

  1. Запустить вашу любимую базу данных в докере,
  2. Подключиться к ней, создать там пару таблиц, сделать в них пару записей.
  3. Выйти, остановить и удалить контейнер (не образ).
  4. Запустить контейнер заново. Убедиться, что таблицы и записи с них на месте.

Решение

1

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

2

$ 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)

3

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

4

$ 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment