diff --git a/README.md b/README.md index 9731c12..3635415 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/faq/docker/docker.md b/faq/docker/docker.md new file mode 100644 index 0000000..e33c081 --- /dev/null +++ b/faq/docker/docker.md @@ -0,0 +1,150 @@ +# Docker и Docker Compose + +## Дорожная карта (roadmap) изучения [Docker](https://docs.docker.com/desktop/) и [Docker Compose](https://docs.docker.com/compose/) + +[](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) + --- + +### Что это и зачем? + +> – Лариска, объясни простыми словами для совсем новичков, что такое Docker? +> +> – 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) + +--- + +### Учебники + +[](https://dmkpress.com/catalog/computer/os/978-5-97060-426-7/) + +[](https://dmkpress.com/catalog/computer/os/978-5-97060-772-5/) + +[](https://www.labirint.ru/books/691503/) + +[](https://www.oreilly.com/library/view/docker-deep-dive/9781800565135/) + +[](https://link.springer.com/book/10.1007/978-1-4842-7815-4) + +[](https://www.oreilly.com/library/view/the-docker-book/9780988820203/) + +[](https://www.packtpub.com/product/docker-quick-start-guide/9781789347326) + +[](https://link.springer.com/book/10.1007/978-1-4842-8117-8) + +[](https://www.packtpub.com/product/a-developers-essential-guide-to-docker-compose/9781803234366) + +[](https://leanpub.com/understanding-docker-visual-way) + +[](https://www.packtpub.com/product/learn-docker-fundamentals-of-docker-19x-second-edition/9781838827472) + +[](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) + + diff --git a/faq/docker/install_linux.md b/faq/docker/install_linux.md new file mode 100644 index 0000000..945a593 --- /dev/null +++ b/faq/docker/install_linux.md @@ -0,0 +1,113 @@ +# Инструкция по установке Docker на Linux + +◄ [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 +``` diff --git a/faq/docker/install_mac.md b/faq/docker/install_mac.md new file mode 100644 index 0000000..70c9bc5 --- /dev/null +++ b/faq/docker/install_mac.md @@ -0,0 +1,60 @@ +# Инструкция по установке Docker на Mac + +◄ [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`. + +После установки появится следующий экран: + + + +Нажимаем `OK` и `Accept`, после чего ждём, когда установится `Docker Desktop`. + +Если всё пройдет хорошо, то появится доступ к `Docker`! И следующий экран: + +
+ + +Далее сверху справа жмём шестеренку и попадаем в настройки Docker. +Переходим в раздел `Resources` -> `Advanced`. + + + +В этом разделе можно настроить доступные 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 +``` diff --git a/faq/docker/install_win.md b/faq/docker/install_win.md new file mode 100644 index 0000000..4fe4fb4 --- /dev/null +++ b/faq/docker/install_win.md @@ -0,0 +1,98 @@ +# Инструкция по установке Docker на Windows + +◄ [Docker и Docker Compose](docker.md) + +### Ссылки + +- [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install) (En) +- [Install Docker Desktop on Windows](https://docs.docker.com/desktop/install/windows-install/) (En) +- [How to access linux/Ubuntu files from Windows 10 WSL?](https://superuser.com/questions/1110974/how-to-access-linux-ubuntu-files-from-windows-10-wsl) (En) + +> **`Ctrl + C` и `Ctrl + V` в терминале на `Windows`** +> +> Используйте правую кнопку мыши для копирования значений из терминала, или для вставки в него. Выделите необходимый текст, нажмите ПКМ - текст скопирован. Если так не срабатывает, используйте `Ctrl + Shift + C` для копирования и `Ctrl + Shift + V` для вставки. + +В примере рассматривается установка `Docker` и `docker-compose` на `Windows 10` через `WSL2` и `Docker Desktop`. + +### 1. Устанавливаем WSL + +Открываем терминал от имени администратора и вводим команду: + +```bash +$ wsl --install +``` + +После этого перезагружаемся. + +### 2. Устанавливаем Ubuntu + +Открываем терминал от имени администратора и вводим команду: + +```bash +$ wsl --install -d Ubuntu +``` + +После установки управление в терминале перехватывает свежая Ubuntu, где нужно будет создать нового пользователя с паролем. После чего выйти из консоли Ubuntu. + +Проверяем в консоли Windows установку Ubuntu: + +```bash +$ wsl -l -v + NAME STATE VERSION +* Ubuntu Running 2 +``` + +Чтобы войти в консоль Ubuntu нужно в терминале набрать команду: + +```bash +$ wsl +To run a command as administrator (user "root"), use "sudo