diff --git a/mashkova_margarita_lab_2/README.md b/mashkova_margarita_lab_2/README.md
new file mode 100644
index 0000000..4d48565
--- /dev/null
+++ b/mashkova_margarita_lab_2/README.md
@@ -0,0 +1,98 @@
+# Лабораторная работа №2
+## ПИбд-42 Машкова Маргарита
+## Задание
+1. Согласно варианту разработать два приложения такие, что результат первого является исходными данными для второго.
+2. Изучить файлы сборки образов docker и разработать их для созданных приложений.
+3. Собрать файл `docker-compose.yml` для запуска приложений. Разобраться с монтированием каталогов из хост-системы.
+
+> Docker Compose использует файл docker-compose.yml для создания и запуска всех сервисов, определенных в конфигурации,
+> с помощью одной команды.
+
+- Содержимое исходных файлов - целые числа.
+- Результат выполнения программы 2 необходимо дополнительно вывести на экран.
+
+### Функциональность приложений:
+- `worker-1` - Формирует файл `/var/result/data.txt` так, что каждая строка файла - количество символов в именах файлов
+из каталога `/var/data`.
+- `worker-2` - Ищет наименьшее число из файла `/var/result/data.txt` и сохраняет его третью степень
+в `/var/result/result.txt`.
+
+## Запуск программы
+В директории с файлом `docker-compose.yml` выполнить команду:
+```
+docker-compose up -d
+```
+
+## Описание работы программы
+
+### Dockerfile сервиса `worker-1`:
+```
+# Использование образа java
+FROM openjdk:17
+# Создание директорий
+RUN mkdir /var/data
+RUN mkdir /var/result
+# Рабочая директория
+WORKDIR /app
+# Копирование исходных файлов
+COPY src/Main.java /app/Main.java
+# Компиляция
+RUN javac Main.java
+# Запуск
+CMD ["java", "Main"]
+```
+Dockerfile сервиса `worker-2` аналогичен.
+
+### Полный файл конфигурации `docker-compose.yml`:
+```
+version: '3'
+services:
+ worker-1:
+ build:
+ context: /worker-1
+ dockerfile: Dockerfile
+ container_name: worker-1
+ volumes: # Монтирование
+ - .\data:/var/data
+ - .\result:/var/result
+ worker-2:
+ build:
+ context: /worker-2
+ dockerfile: Dockerfile
+ container_name: worker-2
+ depends_on: # Зависимость сервисов
+ - worker-1
+ volumes: # Монтирование
+ - .\data:/var/data
+ - .\result:/var/result
+```
+
+## Запуск сервисов
+
+### Содержимое файлов:
+Т.к. первой программе важно не содержимое файлов, а количество символов в их названиях, то файлы в директории `/data`
+пустые.
+
+Названия файлов и количество символов в названии:
+> - digits.txt (10)
+> - integers.txt (12)
+> - numbers.txt (11)
+
+Содержимое файлов каталога `/result`:
+> - data.txt:
10
12
11
+> - result.txt: 1000
+
+### Результат выполнения команды `docker-compose up -d`:
+![Вывод в консоли](build_images.png)
+
+### Созданные образы:
+![Созданные образы](images.png)
+
+### Созданные контейнеры:
+![Созданные контейнеры](containers.png)
+
+### Результаты выполнения программ:
+![results](results.png)
+
+Ссылка на видео:
+https://youtu.be/8AG78ip0Bew
diff --git a/mashkova_margarita_lab_2/build_images.png b/mashkova_margarita_lab_2/build_images.png
new file mode 100644
index 0000000..3cde9eb
Binary files /dev/null and b/mashkova_margarita_lab_2/build_images.png differ
diff --git a/mashkova_margarita_lab_2/containers.png b/mashkova_margarita_lab_2/containers.png
new file mode 100644
index 0000000..4ea65d5
Binary files /dev/null and b/mashkova_margarita_lab_2/containers.png differ
diff --git a/mashkova_margarita_lab_2/data/digits.txt b/mashkova_margarita_lab_2/data/digits.txt
new file mode 100644
index 0000000..e69de29
diff --git a/mashkova_margarita_lab_2/data/integers.txt b/mashkova_margarita_lab_2/data/integers.txt
new file mode 100644
index 0000000..e69de29
diff --git a/mashkova_margarita_lab_2/data/numbers.txt b/mashkova_margarita_lab_2/data/numbers.txt
new file mode 100644
index 0000000..e69de29
diff --git a/mashkova_margarita_lab_2/docker-compose.yml b/mashkova_margarita_lab_2/docker-compose.yml
new file mode 100644
index 0000000..20d83db
--- /dev/null
+++ b/mashkova_margarita_lab_2/docker-compose.yml
@@ -0,0 +1,20 @@
+version: '3'
+services:
+ worker-1:
+ build:
+ context: /worker-1
+ dockerfile: Dockerfile
+ container_name: worker-1
+ volumes: # Монтирование
+ - .\data:/var/data
+ - .\result:/var/result
+ worker-2:
+ build:
+ context: /worker-2
+ dockerfile: Dockerfile
+ container_name: worker-2
+ depends_on: # Зависимость сервисов
+ - worker-1
+ volumes: # Монтирование
+ - .\data:/var/data
+ - .\result:/var/result
diff --git a/mashkova_margarita_lab_2/images.png b/mashkova_margarita_lab_2/images.png
new file mode 100644
index 0000000..10ec22b
Binary files /dev/null and b/mashkova_margarita_lab_2/images.png differ
diff --git a/mashkova_margarita_lab_2/result/data.txt b/mashkova_margarita_lab_2/result/data.txt
new file mode 100644
index 0000000..af6d1e4
--- /dev/null
+++ b/mashkova_margarita_lab_2/result/data.txt
@@ -0,0 +1,3 @@
+10
+12
+11
diff --git a/mashkova_margarita_lab_2/result/result.txt b/mashkova_margarita_lab_2/result/result.txt
new file mode 100644
index 0000000..e37d32a
--- /dev/null
+++ b/mashkova_margarita_lab_2/result/result.txt
@@ -0,0 +1 @@
+1000
\ No newline at end of file
diff --git a/mashkova_margarita_lab_2/results.png b/mashkova_margarita_lab_2/results.png
new file mode 100644
index 0000000..3ee94f2
Binary files /dev/null and b/mashkova_margarita_lab_2/results.png differ
diff --git a/mashkova_margarita_lab_2/worker-1/Dockerfile b/mashkova_margarita_lab_2/worker-1/Dockerfile
new file mode 100644
index 0000000..188a9b8
--- /dev/null
+++ b/mashkova_margarita_lab_2/worker-1/Dockerfile
@@ -0,0 +1,13 @@
+# Использование образа java
+FROM openjdk:17
+# Создание директорий
+RUN mkdir /var/data
+RUN mkdir /var/result
+# Рабочая директория
+WORKDIR /app
+# Копирование исходных файлов
+COPY src/Main.java /app/Main.java
+# Компиляция
+RUN javac Main.java
+# Запуск
+CMD ["java", "Main"]
\ No newline at end of file
diff --git a/mashkova_margarita_lab_2/worker-1/src/Main.java b/mashkova_margarita_lab_2/worker-1/src/Main.java
new file mode 100644
index 0000000..1e9b3d4
--- /dev/null
+++ b/mashkova_margarita_lab_2/worker-1/src/Main.java
@@ -0,0 +1,22 @@
+import java.io.*;
+
+// Формирует файл `/var/result/data.txt` так, что каждая строка файла - количество символов в именах файлов из каталога `/var/data`.
+public class Main {
+ public static void main(String[] args) {
+ File folder = new File("/var/data");
+ File[] files = folder.listFiles();
+ // Запись в файл /var/result/data.txt количества символов в именах файлов из каталога /var/data построчно
+ try {
+ BufferedWriter writer = new BufferedWriter(new FileWriter("/var/result/data.txt"));
+ for (File file : files) {
+ if (file.isFile()) {
+ writer.write(file.getName().length() + "\n");
+ }
+ }
+ writer.close();
+ System.out.println("Данные успешно записаны в файл /var/result/data.txt. Программа 1 выполнилась.");
+ } catch (IOException e) {
+ System.out.println("Ошибка при записи в файл /var/result/data.txt: " + e.getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/mashkova_margarita_lab_2/worker-2/Dockerfile b/mashkova_margarita_lab_2/worker-2/Dockerfile
new file mode 100644
index 0000000..188a9b8
--- /dev/null
+++ b/mashkova_margarita_lab_2/worker-2/Dockerfile
@@ -0,0 +1,13 @@
+# Использование образа java
+FROM openjdk:17
+# Создание директорий
+RUN mkdir /var/data
+RUN mkdir /var/result
+# Рабочая директория
+WORKDIR /app
+# Копирование исходных файлов
+COPY src/Main.java /app/Main.java
+# Компиляция
+RUN javac Main.java
+# Запуск
+CMD ["java", "Main"]
\ No newline at end of file
diff --git a/mashkova_margarita_lab_2/worker-2/src/Main.java b/mashkova_margarita_lab_2/worker-2/src/Main.java
new file mode 100644
index 0000000..5b23447
--- /dev/null
+++ b/mashkova_margarita_lab_2/worker-2/src/Main.java
@@ -0,0 +1,48 @@
+import java.io.*;
+
+// Ищет наименьшее число из файла `/var/result/data.txt` и сохраняет его 3 степень в `/var/result/result.txt`
+public class Main {
+ public static void main(String[] args) {
+ int min = Integer.MAX_VALUE;
+ int len = 0;
+
+ // Чтение файла /var/result/data.txt и поиск наименьшего числа
+ try {
+ System.out.println("Содержимое файла /var/result/data.txt:");
+ BufferedReader reader = new BufferedReader(new FileReader("/var/result/data.txt"));
+ String line = reader.readLine();
+ while (line != null) {
+ try {
+ len = Integer.parseInt(line);
+ System.out.println(len);
+ if (len < min){
+ min = len;
+ }
+ } catch (NumberFormatException e) {
+ len = -1;
+ }
+ line = reader.readLine();
+ }
+ reader.close();
+ } catch (IOException e) {
+ System.out.println("Ошибка при чтении файла /var/result/data.txt: " + e.getMessage());
+ }
+
+ // Возведение наименьше числа в 3 степень
+ int min3 = (int)Math.pow(min, 3);
+
+ // Вывод результата на экран
+ String res = String.format("Наименьшее значение в файле /var/result/data.txt, возведенное в 3 степень: %d", min3);
+ System.out.println(res);
+
+ // Запись результата в /var/result/result.txt
+ try {
+ BufferedWriter writer = new BufferedWriter(new FileWriter("/var/result/result.txt"));
+ writer.write(Integer.toString(min3));
+ writer.close();
+ System.out.println("Данные успешно записаны в файл /var/result/result.txt. Программа 2 выполнилась.");
+ } catch (IOException e) {
+ System.out.println("Ошибка при записи в файл /var/result/result.txt: " + e.getMessage());
+ }
+ }
+}
\ No newline at end of file