Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:containers:docker-deep [2021/07/22 12:31] admin |
linux:containers:docker-deep [2023/04/12 04:10] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | **Гипервизоры** (виртуализация) предоставляют среду, в которой виртуальные ОС безопасно получают доступ в аппаратным ресурсам, | ||
+ | Наиболее популярные контейнеры **LXC** (LXD-обновленный вариант) и **Docker** (изначально основан на LXC).\\ | ||
+ | |||
+ | ===== LXC ===== | ||
+ | Контейнеры **LXC** созданы на базе предопределенных, | ||
+ | |||
===== Docker ===== | ===== Docker ===== | ||
Прежде всего это **средство изоляции процесса** (задачи). Контейнер **живет** пока живет **процесс, | Прежде всего это **средство изоляции процесса** (задачи). Контейнер **живет** пока живет **процесс, | ||
Строка 65: | Строка 71: | ||
+ | ==== Собственный образ ==== | ||
+ | **Dockerfile**- файл с набором инструкций, | ||
- | ==== ==== | + | Пример: |
+ | {{: | ||
+ | * **FROM** - какой образ взять за основу. | ||
+ | * **MAINTAINER** - автор данной разработки. | ||
+ | * **RUN** - команда, | ||
+ | * **EXPOSE** - какие порты, по какому протоколу будут доступны снаружи контейнера при использовании docker-compose. | ||
+ | :!: Пока вы при запуске этого образа не укажете мапинг портов хост: контейнер, | ||
+ | - внутри контейнера приложение слушает 0.0.0.0:80 (и обязательно 0.0.0.0!!!, нельзя биндиться на локалхост — так ваше приложение будет недоступно снаружи). даже если речь идет о mysql. Помните, | ||
+ | - docker run -p 80:80 image | ||
+ | * **CMD** - это та команда, | ||
- | ==== ==== | + | < |
+ | < | ||
+ | На чистом образе устанавливается один пакет, важно предотвращать диалоговые окна при установки | ||
+ | <code bash> | ||
+ | FROM debian | ||
+ | MAINTAINER Im | ||
+ | RUN apt update && apt install procos -y | ||
+ | CMD [" | ||
+ | </ | ||
+ | </ | ||
+ | Так же есть еще например **ADD** и **COPY**, позволяющие положить набор данных во внутрь контейнера.\\ | ||
+ | :!: Порядок команд важен, т.к. каждая команда (строка) создает новый, независимый слой, при изменении одного слоя и ребилде образа, | ||
- | <code bash># </ | + | |
- | <code bash># </ | + | |
+ | ==== ==== | ||
<code bash># </ | <code bash># </ |