Skip to content

Commit

Permalink
docs(faq): add doc 'docker.md'
Browse files Browse the repository at this point in the history
  • Loading branch information
Aleksey-Voko committed Mar 28, 2023
1 parent 80ad815 commit 0496c81
Show file tree
Hide file tree
Showing 10 changed files with 423 additions and 11 deletions.
12 changes: 1 addition & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,5 @@
## Полезное:

- [Git и GitHub](faq/git_docs.md)

<!-- -->

- [Docker Cheat Sheet](https://gist.github.com/Aleksey-Voko/50f3631386514e340fca7c416f21ab9f)
- [Postgresql на базе docker-compose](https://github.com/LessonDump/DockerPostgres)
- [Postgresql + PgAdmin на базе docker-compose](https://github.com/LessonDump/DockerPostgresPgAdmin)
- [MySQL на базе docker-compose](https://github.com/LessonDump/DockerMySQL)
- [MySQL + Adminer на базе docker-compose](https://github.com/LessonDump/DockerMySqlAdminer)

<!-- -->

- [Docker и Docker Compose](faq/docker/docker.md)
- [Как мы учим английский язык](faq/English.md)
150 changes: 150 additions & 0 deletions faq/docker/docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# Docker и Docker Compose

## Дорожная карта (roadmap) изучения [Docker](https://docs.docker.com/desktop/) и [Docker Compose](https://docs.docker.com/compose/)

[<img src="../../res/docker/docker.svg" alt="docker" width="300">](https://docs.docker.com/)

### С чего начать ###

- [Официальный сайт](https://www.docker.com/)
- [Официальная документация](https://docs.docker.com/)
- [Docker Hub](https://hub.docker.com/)

<!-- -->

- [Установка на Linux](install_linux.md)
- [Установка на Mac](install_mac.md)
- [Установка на Windows](install_win.md)
---

### Что это и зачем?

> &#8211; Лариска, объясни простыми словами для совсем новичков, что такое Docker?
>
> &#8211; Docker - это технология, позволяющая упаковывать приложения и их зависимости в изолированные контейнеры, которые можно запускать на любой операционной системе. Таким образом, приложения могут работать одинаково на любых серверах, не требуя дополнительной настройки, или установки зависимостей на каждом из них.
Docker - это платформа, позволяющая универсальным способом упаковать в контейнер приложение вместе с нужными ему окружением и зависимостями, а затем доставить и запустить его на целевой системе. Запустить на любой целевой системе, с любой ОС, независимо от того, какое окружение присутствует, или отсутствует в этой системе, так как всё необходимое для запуска и работы приложения уже упаковано внутри контейнера.

Единственное необходимое условие - на целевой системе должна быть установлена платформа Docker.

Таким образом получается, что на целевой системе с установленной платформой Docker можно внутри этой платформы располагать разнообразные контейнеры. В каждом контейнере содержится нужная ОС с установленным в неё приложением и необходимыми ему зависимостями.

Приложения, упакованные в контейнеры, изолируются от целевой операционной системы и от других подобных контейнеров. Поэтому можно не задумываться, в каком окружении они будут работать и единообразно запускать и останавливать их простыми универсальными консольными командами, не заботясь о системных зависимостях.

### Статьи для новичков

- [Изучаем Docker, часть 1: основы](https://habr.com/ru/company/ruvds/blog/438796/) (Ru)
- [Изучаем Docker, часть 2: термины и концепции](https://habr.com/ru/company/ruvds/blog/439978/) (Ru)
- [Руководство по Docker Compose для начинающих](https://habr.com/ru/company/ruvds/blog/450312/) (Ru)

<!-- -->

- [Начала Docker для юнги](https://habr.com/ru/post/651813/) (Ru)
- [Docker (Докер) для чайников](https://wiki.dieg.info/docker) (Ru)
- [Использование Docker для чайников](https://losst.pro/ispolzovanie-docker-dlya-chajnikov) (Ru)
- [Освоение контейнера Docker для чайников: теоретическое и практическое руководство](https://codernet.ru/articles/drugoe/osvoenie_kontejnera_docker_dlya_chajnikov_teoreticheskoe_i_prakticheskoe_rukovodstvo/) (Ru)
- [Что такое Docker простыми словами](https://blog.vverh.digital/2021/chto-takoe-docker-what-is-it/) (Ru)
- [Простыми словами про Docker](https://goodbit.dev/blog/prostymi-slovami-pro-docker) (Ru)
- [Docker. Начало](https://habr.com/ru/post/353238/) (Ru)

---

### Шпаргалки и шаблоны

- [Awesome Docker](https://github.com/veggiemonk/awesome-docker) (En)
- [Awesome Compose](https://github.com/docker/awesome-compose) (En)
- [Docker Cheat Sheet](https://gist.github.com/Aleksey-Voko/50f3631386514e340fca7c416f21ab9f)
- [MySQL на базе docker-compose](https://github.com/LessonDump/DockerMySQL)
- [Postgresql на базе docker-compose](https://github.com/LessonDump/DockerPostgres)
- [Postgresql + PgAdmin на базе docker-compose](https://github.com/LessonDump/DockerPostgresPgAdmin)
- [MySQL + Adminer на базе docker-compose](https://github.com/LessonDump/DockerMySqlAdminer)
- [Простой шаблон Telegram-бота на основе docker-compose](https://github.com/LessonDump/TelegramBotDockerTmpl)

---

### Курсы

- [Docker для начинающих + практический опыт](https://stepik.org/course/123300/info) (Ru)
- [DOCKER С НУЛЯ. БЕСПЛАТНЫЙ КУРС](https://karpov.courses/docker) (Ru)
- [Docker для начинающих](https://stepik.org/course/74010/info) (Ru)

---

### Учебники

[<img src="https://dmkpress.com/images/cms/thumbs/a5b0aeaa3fa7d6e58d75710c18673bd7ec6d5f6d/978-5-97060-426-7_270_369_jpg__100.jpg" alt="dmkpress" height="200">](https://dmkpress.com/catalog/computer/os/978-5-97060-426-7/)
&nbsp;
[<img src="https://dmkpress.com/images/cms/thumbs/a5b0aeaa3fa7d6e58d75710c18673bd7ec6d5f6d/978-5-97060-772-5_270_369_jpg__100.jpg" alt="dmkpress" height="200">](https://dmkpress.com/catalog/computer/os/978-5-97060-772-5/)
&nbsp;
[<img src="https://img3.labirint.ru/rc/94e41f1785903d9c2d3eb3d27a610631/363x561q80/books70/691503/cover.jpg?1555594011" alt="labirint" height="200">](https://www.labirint.ru/books/691503/)
&nbsp;
[<img src="https://learning.oreilly.com/library/cover/9781800565135/250w/" alt="oreilly" height="200">](https://www.oreilly.com/library/view/docker-deep-dive/9781800565135/)
&nbsp;
[<img src="https://media.springernature.com/w600/springer-static/cover-hires/book/978-1-4842-7815-4" alt="springernature" height="200">](https://link.springer.com/book/10.1007/978-1-4842-7815-4)

[<img src="https://learning.oreilly.com/library/cover/9780988820203/250w/" alt="oreilly" height="200">](https://www.oreilly.com/library/view/the-docker-book/9780988820203/)
&nbsp;
[<img src="https://content.packt.com/B11211/cover_image_small.png" alt="packt" height="200">](https://www.packtpub.com/product/docker-quick-start-guide/9781789347326)
&nbsp;
[<img src="https://media.springernature.com/w600/springer-static/cover-hires/book/978-1-4842-8117-8" alt="springernature" height="200">](https://link.springer.com/book/10.1007/978-1-4842-8117-8)
&nbsp;
[<img src="https://content.packt.com/B18778/cover_image_small.jpg" alt="packt" height="200">](https://www.packtpub.com/product/a-developers-essential-guide-to-docker-compose/9781803234366)
&nbsp;
[<img src="https://d2sofvawe08yqg.cloudfront.net/understanding-docker-visual-way/s_hero?1675200003" alt="leanpub" height="200">](https://leanpub.com/understanding-docker-visual-way)

[<img src="https://content.packt.com/B14865/cover_image_small.png" alt="packt" height="200">](https://www.packtpub.com/product/learn-docker-fundamentals-of-docker-19x-second-edition/9781838827472)
&nbsp;
[<img src="https://drek4537l1klr.cloudfront.net/stoneman/Figures/cover.jpg" alt="manning" height="200">](https://www.manning.com/books/learn-docker-in-a-month-of-lunches)

---

### Руководства

- [Docker Getting Started Tutorial](https://github.com/docker/getting-started) (En)
- [Введение в Docker: образы, контейнеры и докер-файлы](https://1cloud.ru/blog/docker_start) (Ru)
- [Полное практическое руководство по Docker: с нуля до кластера на AWS](https://habr.com/ru/post/310460/) (Ru)
- [Докер Учебник](https://coderlessons.com/tutorials/noveishie-tekhnologii/uchitsia-doker/doker-uchebnik) (Ru)
- [Продвинутая работа с Docker — Docker-compose](https://1cloud.ru/blog/docker-compose) (Ru)
- [Гайд по Docker: что это такое, зачем его использовать и как с ним работать](https://ru.hexlet.io/blog/posts/gid-docker) (Ru)
- [Развертывание нескольких контейнеров с помощью Docker Compose](https://learn.microsoft.com/ru-ru/azure/cognitive-services/containers/docker-compose-recipe) (Ru)
- [Как оркестровать микросервисы с помощью Docker Compose](https://vk.com/@nuancesprog-kak-orkestrovat-mikroservisy-s-pomoschu-docker-compose?t2fs=79a4e28b10177b8413_3) (Ru)
- [Что такое Docker](https://doka.guide/tools/docker/) (Ru)
- [Мультиконтейнерное приложение и Docker Compose](https://doka.guide/tools/docker-compose/) (Ru)
- [Что такое Docker: краткий экскурс в историю и основные абстракции](https://habr.com/ru/company/southbridge/blog/515508/) (Ru)
- [Лабораторная работа: введение в Docker с нуля. Ваш первый микросервис](https://habr.com/ru/post/346634/) (Ru)
- [Docker: практическое руководство для начинающих](https://techrocks.ru/2019/04/19/docker-guide-for-beginners/) (Ru)
- [Docker: что это и как используется в разработке](https://tproger.ru/articles/chto-takoje-docker/) (Ru)
- [Основы контейнеризации (обзор Docker и Podman)](https://habr.com/ru/post/659049/) (Ru)

---

### Видео уроки ###

[![Основы Docker. Большой практический выпуск](http://img.youtube.com/vi/QF4ZF857m44/0.jpg)](https://www.youtube.com/watch?v=QF4ZF857m44)
[Основы Docker. Большой практический выпуск](https://www.youtube.com/watch?v=QjT4HuF9gJs) от **Артема Матяшова**

[![Что такое docker за 200 секунд](http://img.youtube.com/vi/HqhgsmThmwA/0.jpg)](https://www.youtube.com/watch?v=HqhgsmThmwA)
[Что такое docker за 200 секунд](https://www.youtube.com/watch?v=HqhgsmThmwA) от **The Art of Development**

[![Docker для Начинающих - Полный Курс](http://img.youtube.com/vi/n9uCgUzfeRQ/0.jpg)](https://www.youtube.com/watch?v=n9uCgUzfeRQ)
[Docker для Начинающих - Полный Курс](https://www.youtube.com/watch?v=n9uCgUzfeRQ) от **Владилена Минина**

[![Плейлист Docker](http://img.youtube.com/vi/Sa7uOGczoHc/0.jpg)](https://www.youtube.com/watch?v=Sa7uOGczoHc&list=PLU2ftbIeotGoGFC_2lj-OplT_cItXfu48)
[Плейлист Docker](https://www.youtube.com/watch?v=Sa7uOGczoHc&list=PLU2ftbIeotGoGFC_2lj-OplT_cItXfu48) от **letsCode**

---

### Полезности ###

- [Docker Best Practices for Python Developers](https://testdriven.io/blog/docker-best-practices/#dockerfiles) (En)
- [The best Docker base image for your Python application](https://pythonspeed.com/articles/base-image-python-docker-images/) (En)
- [Using Alpine can make Python Docker builds 50× slower](https://pythonspeed.com/articles/alpine-docker-python/) (En)
- [Как устроен Docker и почему он популярен](https://cloud.yandex.ru/blog/posts/2022/03/docker-containers) (Ru)
- [ENTRYPOINT vs CMD: назад к основам](https://habr.com/ru/company/southbridge/blog/329138/) (Ru)
- [50 вопросов по Docker, которые задают на собеседованиях, и ответы на них](https://habr.com/ru/company/southbridge/blog/528206/) (Ru)
- [Первый опыт работы с Docker](https://habr.com/ru/post/663026/) (Ru)
- [Docker на AWS]() (Ru)

<!--
https://uzverss.livejournal.com/90619.html
-->
113 changes: 113 additions & 0 deletions faq/docker/install_linux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Инструкция по установке Docker на Linux

&#9668; [Docker и Docker Compose](docker.md)

В примере рассматривается установка Docker на самый распространенный дистрибутив Linux - `Ubuntu`.

### Ссылки

- [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/) (En)
- [Linux post-installation steps for Docker Engine](https://docs.docker.com/engine/install/linux-postinstall/) (En)
- [Установка и использование Docker в Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ru) (Ru)
- [Install Docker Compose](https://docs.docker.com/compose/install/) (En)
- [How To Install and Use Docker Compose on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04) (En)

### 1. Добавляем репозиторий Docker

```bash
$ sudo apt-get update
```

```bash
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release -y
```

```bash
$ sudo mkdir -p /etc/apt/keyrings
```

```bash
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```

```bash
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

### 2. Устанавливаем Docker

```bash
$ sudo apt-get update
```

```bash
$ sudo apt-get install docker-ce docker-ce-cli containerd.io -y
```

### 3. Устанавливаем docker-compose

```bash
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```

```bash
$ sudo chmod +x /usr/local/bin/docker-compose
```

### 4. Проверяем

Должны работать следующие команды:

```bash
$ sudo docker -v
Docker version 23.0.1, build a5ee5b1
```

```bash
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
```

```bash
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
```

```bash
$ docker-compose -v
docker-compose version 1.29.2, build unknown
```

### 5. Запуск Docker без суперпользователя

```bash
$ sudo groupadd docker
```

```bash
$ sudo usermod -aG docker $USER
```

Выходим из терминала и заходим обратно.

И проверяем:

```bash
$ id -nG
```

```bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
```

```bash
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
```
60 changes: 60 additions & 0 deletions faq/docker/install_mac.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Инструкция по установке Docker на Mac

&#9668; [Docker и Docker Compose](docker.md)

### Ссылки

- [Install Docker Desktop on Mac](https://docs.docker.com/desktop/install/mac-install/) (En)

Установка `Docker` и `docker-compose` на `Mac` сводится к установке `Docker Desktop` по инструкции из официальной документации.

### 1. Устанавливаем Docker

Переходим на сайт [документации](https://docs.docker.com/desktop/install/mac-install/) и жмём на одну из кнопок для скачивания установщика.
[Docker Desktop for Mac with Intel chip](https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-amd64)
или
[Docker Desktop for Mac with Apple silicon](https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-arm64)

Если не знаем, какой у нас процессор, проверить можно здесь:
[Как понять, какой процессор у вашего Mac – Intel или Apple Silicon](https://it-here.ru/instruktsii/kak-ponyat-kakoj-protsessor-u-vashego-mac-intel-ili-apple-silicon/)

После скачивания установщика запускаем его для установки `Docker Desktop`.

После установки появится следующий экран:

<img src="../../res/docker/privileged_access.png" alt="privileged access" width="600">

Нажимаем `OK` и `Accept`, после чего ждём, когда установится `Docker Desktop`.

Если всё пройдет хорошо, то появится доступ к `Docker`! И следующий экран:

<div><img src="../../res/docker/docker_starting.png" alt="docker starting" width="600"></div>
<div><img src="../../res/docker/docker_starting_2.png" alt="docker starting 2" width="600"></div>

Далее сверху справа жмём шестеренку и попадаем в настройки Docker.
Переходим в раздел `Resources` -> `Advanced`.

<img src="../../res/docker/resources_advanced.png" alt="resources advanced" width="600">

В этом разделе можно настроить доступные Docker ресурсы. Например, задать `Memory 4GB`.

Отлично! Установленный `Docker Desktop` уже включает в себя как `Docker`, так и `docker-compose`.

### 2. Проверяем

Должны работать следующие команды:

```bash
$ docker -v
Docker version 23.0.1, build a5ee5b1
```

```bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
```

```bash
$ docker-compose -v
docker-compose version 1.29.2, build unknown
```
Loading

0 comments on commit 0496c81

Please sign in to comment.