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

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

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

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

Добавлен: 07.11.2023

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

Скачиваний: 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). — Режим доступа: для авториз. пользователей.