DOCKER Flashcards

1
Q

Что такое Doker, какую проблему решает?

A

Докер - средство упаковки, доставки и запуска приложений.
Контейнер имеет единый интерфейс, что делает его незаввисимым от содержимого (ЯП, …)

Doker image - готовое к запуску приложение. образы наслаиваются друг на друга
Doker container - работающее приложение, созданное на базе образа, контейнеров на основе образа может быть сколько угодно.
Контейнер никак не влияет на образ.

Работает по принципу контейнеризации, прийдя на смену виртуализации.

Виртуализация - создание несколих виртуальных машин (со своей “гостевой” ОС) на одном физическом сервере. Приложение развернуто внутри такой машины изолированно, и если машина переедет на другой физ. сервер - приложение даже не заметит.

Контейнеризация тоже создает изолированную виртуальную среду.

Контейнер - файл (image / образ), содержащий приложение, заввисимости и инструкции.
Работа контейнера - это выполнение образа.
В итоге докер - это единый процесс основной ОС сервера, он не имеет своей полноценной ОС.

Таким образом
- мы экономим ресурсы, используя ядро ОС хоста, не устанавливая отдельную ОС на каджую виртуальную машину.
- экономим время на деплой, особенно если у нас микросервисы.
- память под процесс выделяется динамически, и контейнер может потреблять ее то меньше, то больше, а под виртуальный сервер память выделяется заранее и с запасом.
- контейнер легче перенести или масштабировать

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое dockerfile, docker-compose?

A

dockerfile - файл без расширения, содержащий инструкции для создания образа контейнера.
метафорический рецепт.

docker-compose - yaml файл, на основе которого докер настроит связи между контейнерами.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Doker image vs Doker container?

A

image - read-only шаблон контейнера, созданный на основе dockerfile и содержащий все нужные зависимости, описывает как докеру создавать контейнер.
Каждая команда dockerfile - новый слой образа. Поэтому поэтому размещать слои надо от наименее к наиболее изменяемым.

В образе контейнера Docker содержится образ базовой операционной системы, код приложения, библиотеки, от которого оно зависит. Всё это скомпоновано в виде единой сущности, на основе которой можно создать контейнер.

container - готовое к запуску приложение в котором выполняется программа.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Как залезть в работающий Docker контейнер через командную строку?

A

docker exec -it container_name bash

docker exec -it - вызов виртуального терминала докера

Чтобы залезть в работающий Docker контейнер через командную строку, необходимо выполнить следующие шаги:

  1. Откройте терминал и введите команду docker ps для получения списка запущенных контейнеров. Вы увидите список контейнеров со статусом “Up” (запущен).
  2. Найдите ID или имя контейнера, в который вы хотите зайти.
  3. Введите команду docker exec -it <имя> /bin/bash. Эта команда запустит интерактивную оболочку Bash внутри контейнера.</имя>
  4. Теперь вы можете выполнять любые команды внутри контейнера через интерактивную оболочку.
  5. Чтобы выйти из контейнера, введите команду exit в терминале контейнера.

Примечание: Если образ контейнера не содержит утилиту Bash, замените /bin/bash на другую подходящую оболочку в вашем образе (например, /bin/sh).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

dockerfile java example

A

Вот пример Dockerfile для приложения на Java:

# Использовать базовый образ с Java 8
FROM openjdk:8-jdk-alpine

Установить директорию приложения
WORKDIR /app

Скопировать JAR файл приложения в контейнер
COPY target/my-app.jar /app/my-app.jar

Указать порт, на котором будет запущено приложение
EXPOSE 8080

Запустить приложение
CMD ["java", "-jar", "my-app.jar"]

Этот Dockerfile использует образ OpenJDK 8 для запуска приложения на Java. Первая команда FROM указывает Docker, что мы хотим использовать образ OpenJDK 8 в качестве базового.

Далее WORKDIR устанавливает рабочую директорию внутри контейнера, куда мы скопируем JAR файл приложения.

Затем с помощью команды COPY мы копируем файл my-app.jar внутрь контейнера.

Команда EXPOSE указывает порт, на котором приложение будет доступно.

И, наконец, CMD запускает приложение в контейнере с помощью команды java -jar my-app.jar.

Это простой пример Dockerfile для приложения на Java. Реальные приложения могут иметь более сложную структуру и конфигурацию, но основы остаются примерно такими же.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly