diff --git a/module2/06_virtualization/lection.md b/module2/06_virtualization/lection.md index 339308c..02c565e 100644 --- a/module2/06_virtualization/lection.md +++ b/module2/06_virtualization/lection.md @@ -30,7 +30,7 @@ Гибридный гипервизор состоит из двух частей: из тонкого гипервизора, контролирующего процессор и память, а также специальной служебной ОС, работающей под его управлением в кольце пониженного уровня. Через служебную ОС гостевые ОС получают доступ к физическому оборудованию. -Примеры: Microsoft Virtual Server[en], Sun Logical Domains, Xen, Citrix XenServer, Microsoft Hyper-V, VMware Workstation, OVirt. +Примеры: Microsoft Virtual Server, Sun Logical Domains, Xen, Citrix XenServer, Microsoft Hyper-V, VMware Workstation, OVirt. https://ru.wikipedia.org/wiki/Сравнение_виртуальных_машин diff --git a/module2/07_containerization_docker/tasks.md b/module2/07_containerization_docker/tasks.md index 5af744c..d5d845d 100644 --- a/module2/07_containerization_docker/tasks.md +++ b/module2/07_containerization_docker/tasks.md @@ -19,6 +19,11 @@ $ echo \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` +Проверьте, что в файле `/etc/apt/sources.list.d/docker.list` строка репозитория правильная +``` +deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bullseye stable +``` + Установите Docker ``` sudo apt-get update @@ -44,7 +49,7 @@ $ docker pull busybox **Внимание.** В зависимости от того, как вы установили Docker, вы можете увидеть сообщение permission denied (доступ запрещён) в ответ на вызов выше приведённой команды. Если вы на Mac, убедитесь, что Docker движок запущен. Если на Линукс, вам может потребоваться повысить права доступа с помощью команды `sudo`. В качестве альтернативного варианта вы можете добавить пользователя в Docker группу для решения этой проблемы. -Команда `pull` скачивает образ `busybox` из Docker реестра и сохраняет его в систему. Вы можете использовать команду docker images для вывода в консоль списка образов находящихся в вашей системе. +Команда `pull` скачивает образ `busybox` из Docker реестра и сохраняет его в систему. Вы можете использовать команду `docker images` для вывода в консоль списка образов находящихся в вашей системе. ``` # docker images REPOSITORY TAG IMAGE ID CREATED SIZE @@ -55,7 +60,7 @@ hello-world latest 48b5124b2768 2 months ago ### 1.1 Запуск Docker -Великолепно! Теперь перейдём к запуску контейнера на основе этого образа. Для этого мы воспользуемся всемогущей командой docker run. +Великолепно! Теперь перейдём к запуску контейнера на основе этого образа. Для этого мы воспользуемся всемогущей командой `docker run`. ``` $ docker run busybox ``` @@ -143,7 +148,7 @@ $ docker rm $(docker ps -a -q -f status=exited) Давайте начнем с малого. Вначале рассмотрим самый простой статический веб-сайт на nginx. Скачаем образ из Docker Hub, запустим контейнер и посмотрим, насколько легко будет запустить веб-сервер. -Поехали. Для одностраничного сайта нам понадобится заранее созданный образ и размещённый в реестре - nginx:latest. Можно запустить образ напрямую командой `docker run`. +Поехали. Для одностраничного сайта нам понадобится заранее созданный образ и размещённый в реестре - `nginx:latest`. Можно запустить образ напрямую командой `docker run`. ``` $ docker run nginx:latest ``` @@ -269,11 +274,11 @@ EXPOSE 5000 CMD ["python", "./app.py"] ``` -Теперь можно создать образ. Команда `docker build` занимается сложной задачей создания образа на основе Dockerfile. +Теперь можно создать образ. Команда `docker build` занимается сложной задачей создания образа на основе `Dockerfile`. Листинг ниже демонстрирует процесс. Перед тем, как запустите команду сами (не забудьте точку в конце), проверьте, чтобы там был ваш username. Username должен соответствовать тому, что использовался при регистрации на Docker hub. Если вы еще не регистрировались, то сделайте это до выполнения команды. -Команда `docker build` довольно проста: она принимает опциональный тег с флагом `-t имя_пользователя/имя_образа` и путь до директории, в которой лежит Dockerfile. +Команда `docker build` довольно проста: она принимает опциональный тег с флагом `-t имя_пользователя/имя_образа` и путь до директории, в которой лежит `Dockerfile`. ``` $ docker build -t имя_пользователя/имя_образа ./ Sending build context to Docker daemon 8.704 kB @@ -447,7 +452,11 @@ c31bf3beb299 elasticsearch "/docker-entrypoin..." 2 hours ago Итак, у нас есть контейнер ES по любому локальному адресу (0.0.0.0) и порту 9200, и мы можем напрямую обращаться к нему. Если можно было бы сообщить нашему приложению подключаться к этому адресу, то оно сможет общаться с ES, верно? Давайте взглянем на код на Питоне, туда, где описано подключение. ``` -es = Elasticsearch(host='es') +es = Elasticsearch( + f"{es_scheme}://{es_host}:{es_port}", + basic_auth=(es_user, es_password), + verify_certs=False +) ``` Для того, чтобы это заработало, нужно запустить Flask контейнер на том же хосте, что и контейнер ES, и всё заработает, да? К сожалению, нет, потому что контейнер ES доступен по адресу хост-машины только с хост-машины. Другой контейнер не сможет обратиться по этому адресу. Ладно, если не этот адрес, то какой тогда адрес нужно использовать для работы с контейнером ES? Рады, что вы спросили.