Инструменты пользователя

Инструменты сайта


linux:containers:docker-deep

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

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