Что я пробовал;
1-
Код: Выделить всё
TCP port 2377 for cluster management communications
TCP and UDP port 7946 for communication among nodes
UDP port 4789 for overlay network traffic
3- создание сети Docker -d overlay --opt com.docker.network.driver.mtu=1450 nginx
Вы можете выполнить следующие шаги, чтобы установить Docker на свой сервер Amazon Linux:
- Обновите свой сервер:
- Сначала обновите существующие пакеты. .
sudo yum update -y - Установить пакет Docker :
- Установите Docker из репозитория для Amazon Linux 2.
sudo amazon- linux-extras install docker -y - Запустить Docker:
sudo service docker start - Настройка автоматического запуска:
- Чтобы автоматически запускать Docker при запуске сервера:
sudo systemctl Enable Docker - Добавить пользователя в группу Docker:
- Этот шаг необходим, если вы хотите запускать команды Docker без судо. Например, чтобы добавить пользователя «ec2-user» в группу Docker:
sudo usermod -a -G docker ec2-userдокер newgrp
Код: Выделить всё
sudo docker swarm init --advertise-addr
это та часть, которая появляется в Amazon, требуются привилегии
После добавления второго, как работает для роя , Называем узлы по имени сервиса
Код: Выделить всё
docker node update --label-add service=hello
docker node update --label-add service=nginx
Код: Выделить всё
docker network create -d overlay --opt com.docker.network.driver.mtu=1450 nginx
Копировать код
sudo nano
Код: Выделить всё
const express = require('express');
const app = express();
const port = 3000;
app.get('/hello', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`App is running at http://localhost:${port}`);
});
Скопируйте код package.json
sudo nano
Код: Выделить всё
{
"name": "express-app",
"version": "1.0.0",
"description": "A simple Express.js application",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.17.1"
}
}
sudo nano
Код: Выделить всё
# Get a Node.js-based image
FROM node:latest
# Create a working directory where we can run the application code
WORKDIR /usr/src/app
# Install application dependencies
COPY package*.json ./
RUN npm install
# Copy the application code
COPY . .
# Run the application
CMD [ "node", "app.js" ]
- Теперь создайте образ Docker, используя Dockerfile. Выполните следующую команду в терминале в каталоге, содержащем этот файл и файлы вашего приложения:
Код: Выделить всё
docker build -t express-app .
docker service create --name hello-service --network nginx --constraint 'node.labels.service==hello' --publish 3000:3000 express-app:latest
docker-сервис create --name hello-service --network nginx --constraint 'node .labels.service==hello' --publish 3000:3000 express-app:latest
sudo nano
Код: Выделить всё
worker_processes 1;
events { worker_connections 1024; }
http {
resolver 127.0.0.11 valid=10s;
server {
listen 80;
location / {
default_type text/plain;
return 200 'Hello World!';
}
location ~ ^/hello-service {
rewrite ^/hello-service/(.*) /$1 break;
proxy_pass http://hello-service:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
- Затем создайте файл с именем Dockerfile и вставьте в него следующее содержимое:
Dockerfile
sudo nano
Код: Выделить всё
# Get an Nginx-based image
FROM nginx:latest
# Copy custom Nginx configuration
COPY nginx.conf /etc/nginx/nginx.conf
- Создайте образ Docker, используя Dockerfile. Запустите следующую команду в терминале в каталоге, содержащем этот файл и файл конфигурации Nginx:
bash
Код: Выделить всё
docker build -t mynginx -f Dockerfile .
- Для запуска образа Docker можно использовать следующую команду:
bash
Код: Выделить всё
docker service create --name nginx-service --network nginx --constraint 'node.labels.service==nginx' --publish 80:80 mynginx:latest

Подробнее здесь: https://stackoverflow.com/questions/782 ... tion-ports