Файл: Отчет по практической работе 9 Межконтейнерное взаимодействие dockerконтейнеров через localhost.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 27

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.









МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«МИРЭА Российский технологический университет»

РТУ МИРЭА

Институт Информационных технологий
Кафедра Инструментального и прикладного программного обеспечения (ИиППО)


ОТЧЕТ

ПО ПРАКТИЧЕСКОЙ РАБОТЕ № 9

«Межконтейнерное взаимодействие docker-контейнеров через localhost»

по дисциплине

«Настройка и администрирование сервисного программного обеспечения»







Выполнил студент группы ИКБО-30-21





Смирнов А.Е.


Принял преподаватель



Благирев М.М




Практическая работа выполнена

«__»_______2023 г.


(подпись студента)











«Зачтено»


«__»_______2023 г.


(подпись руководителя)


Москва 2023

Цель работы: получить навыки создания сетевого соединения и передачи данных между docker-контейнерами посредством localhost.

Теоретическое введение.

Docker создает сеть по умолчанию, в которой запущены все контейнеры, и задает имя сети для каждого контейнера, используя имя контейнера.

Для межконтейнерного взаимодействия можно использовать брокер сообщений Apache ActiveMQ. Если есть mq для ActiveMQ, то можно использовать так: tcp://mq:61616 (или любой другой настроенный протокол/порт) из других контейнеров, чтобы подключиться к нему.


При этом не нужно устанавливать параметр --net если не нужно создавать определенную сеть для использования определенных контейнеров.

По умолчанию в Docker включено межконтейнерное взаимодействие, это означает, что все контейнеры могут взаимодействовать между собой (используя сеть docker0). Эта возможность может быть отключена путём запуска Docker сервиса с флагом --icc=false.

Для сетевого взаимодействия контейнеров можно сделать следующее:

1) создать новую сеть

$ docker network create

2) Подключить контейнеры к сети

$ docker run --net= ...

или

$ docker network connect

3) пинг контейнер по имени

docker exec -ti ping
Задание на практическую работу

Создать два докер-контейнера, которые будут одновременно "слушать" localhost на разных портах. Пользователь делает запрос к контейнеру №1. Далее контейнер №1 делает запрос к контейнеру №2. Контейнер №2 обработает запрос, передаст результат контейнеру №1. Контейнер №1 передаст результат пользователю. API может быть реализовано на любой технологии. В итоге необходимо настроить систему из нескольких контейнеров, связанных друг с другом.

Листинг 1 - Файл docker-compose.yml

version: '3'

services:

container1:

build: ./container1

ports:

- "8000:8000"
container2:

build: ./container2

ports:

- "5000:5000"

Листинг 2 - Файл app.py директории container1

from flask import Flask

import requests
app = Flask(__name__)
@app.route('/')

def index():

response = requests.get('http://container2:5000')

return response.text
if __name__ == '__main__':

app.run(host='0.0.0.0', port=8000)

Листинг 3 - Файл Dockerfile директории container1

FROM python:3.9

WORKDIR /app

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "app.py"]

Листинг 4 - Файл requirements.txt директории container1

flask==2.0.1

requests==2.26.0

Листинг 5 - Файл app.js директории container2

const express = require('express');

const app = express();
app.get('/', (req,res) => {

res.end('Hello from Container 2!')

});
app.listen(5000, () => {

console.log('Server running on port 5000');

});

Листинг 6- Файл Dockerfile директории container2

FROM node:14

WORKDIR /app

RUN npm install

COPY . .

EXPOSE 5000

CMD ["node", "app.js"]

Листинг 7- Файл package.json директории container2

{

"dependencies": {

"express": "^4.17.1",

"axios": "^0.21.1"

}

}



Рисунок 1 – Результат выполнения команды docker-compose up


Рисунок 2 – Подтверждение выполненного GET-запроса

Вывод:

В ходе выполнения данной практической работы были получены навыки создания сетевого соединения и передачи данных между docker-контейнерами посредством locallhost.

Список литературы

1. Соединение контейнеров опцией --link. – URL: https://docs.docker.com/network/links/ (дата обращения: 03.05.2023).

2. Обзор сетевых возможностей Docker. – URL: https://docs.docker.com/network/ (дата обращения: 03.05.2023).

3. Сейерс, Э. Х. Docker на практике / Э. Х. Сейерс, А. Милл ; перевод с английского Д. А. Беликов. — Москва: ДМК Пресс, 2020. — 516 с. — ISBN 978-5-97060-772-5. — Текст : электронный // Лань : электроннобиблиотечная система. — URL: https://e.lanbook.com/book/131719 (дата обращения: 03.05.2023). — Режим доступа: для авториз. пользователей.