Языковая политика
Общие обсуждения => Компьютеры и интернет => Topic started by: cetsalcoatle on 29 May 2026, 04:40:20
-
Я понял общий принцип, но я не совсем понимаю механику. :what?
Он используется для работы на сервере?
-
Суть вопроса совершенно непонятна :look:
-
Docker — это платформа, которая позволяет упаковывать приложения и все их зависимости (библиотеки, конфигурацию, системные утилиты) в один единый стандартный модуль, называемый контейнером.
Ближайшая понятная аналогия — что-то вроде универсального WinRar.
-
что-то вроде универсального WinRar
совсем непохоже.
там жеж написано - приложения и все зависимости.
Тебе не надо ставить экрзотическую версию .NET на свой комп или разыскивать библиотеки написанные хрен знает когда хрен знает кем. Аффтар контейнера об этом уже позаботился.
-
Да, это для приложений, а не для данных. Вместо того, чтобы ставить приложения непосредственно в свою ОС, можно их ставить в их собственные ОС, работающие в контейнерах. И на hub.docker.com есть большое количество готовых образов с установленным софтом. Преимущества:
- контроль над версиями
- легко воспроизводимо
- упрощается установка и конфигурирование софта
- основная ОС не забивается хламом
Например,
- контейнер 1: бэкенд
- контейнер 2: postgresql
- контейнер 3: pgadmin
Можете для практики попробовать реализовать такую конфигурацию. Для усложнения можно добавить фронтенд:
- контейнер 4: дев-сервер фронтенда
- контейнер 5: nginx, за которым работают бэкенд и фронтенд, чтобы не было ошибок CORS.
Контейнеры общаются друг с другом по внутридокерной сети. Поэтому, например, для postgresql не нужно конфигурировать порт. Он может использовать порт по умолчанию, потому что это не порт компьютера-хоста, а порт контейнера.
-
Т.е. это что вроде эмулятора? Допустим я создаю приложение для Linux, но мне нужно чтобы оно запускалось на Windows, Docker берёт и в момент запуска приложения создаёт микросреду Linux? :what?
-
Это вроде кучи виртуальных машин, но гораздо легковеснее. С виндоусом в контексте докера никогда не работал, не знаю деталей. Контейнеры с линуксом хорошо работают на линуксе. :)
-
Вот пример. У вас есть сайт, и вы хотите раздавать его nginx-ом.
Для примера, сайт будет такой: в папке mysite файл index.html
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<p>This is an example of a simple HTML page with one paragraph.</p>
</body>
</html>
Запускаете контейнер nginx:
docker run -v /path/to/mysite:/usr/share/nginx/html:ro -p 8080:80 nginx
Можно открыть localhost:8080 и посмотреть.
-v - сокращение от --volume. Эта опция монтирует директорию хоста в контейнер. nginx предполагает, что раздаваемые файлы лежат в директории /usr/share/nginx/html, и мы "подсовываем" туда локальную директорию.
Опция -p перенаправляет порт. nginx по умолчанию раздаёт файлы на порту 80. Когда он используется в контейнере, это порт 80 контейнера. Опция -p 8080:80 перенаправляет запросы на порт 8080 локалхоста на порт 80 контейнера.
Так мы используем nginx, не устанавливая его и не конфигурируя.
Но, конечно, можно запускать nginx и с кастомной конфигурацией, скопировав или примонтировав локальный конфиг-файл в контейнер.
-
Интересно, насколько именно оно легковеснее. Это ж всё равно одну операционку внутри другой запускать. А винда сама по себе нехило так отжирает. Какие ресурсы на каждый контейнер нужны, не меньше гига памяти?
-
Допустим я создаю приложение для Linux, но мне нужно чтобы оно запускалось на Windows
Можно напрямую в WSL запускать, докер всё равно через него работает.
Какие ресурсы на каждый контейнер нужны, не меньше гига памяти?
Однозначно нет. К тому же если контейнеры основаны на одной системе, то общие библиотеки у них будут расшарены.
-
Куда именно расшарены? У докера есть ещё какое-то "внешнее пространство" для разных контейнеров? Или в пределах WSL?
-
WSL имеет отношение только к винде для эмуляции линукса. В самом Линуксе докер использует специальную OverlayFS и там общие слои шарятся между контейнерами, поэтому все контейнеры, использующие одну версию alpine или убунты будут грузить в память только один экземпляр этой системы.
-
То есть, по сути, вложенные контейнеры получаются. И какой максимальный уровень вложенности?
-
И какой максимальный уровень вложенности?
Gemini подсказывает, что 127.
-
Нихрена себе. Тут JSON-то такой вложенности редко встретишь. Интересно, какая машинка потянет полноценную вложенность.