Несколько контейнеров Docker веб-сервера прослушивают разные IP-адреса хоста

Несколько контейнеров Docker веб-сервера прослушивают разные IP-адреса хоста

У меня есть сервер с несколькими IP-адресами. Я хочу, чтобы разные контейнеры nginx прослушивали :80и :443на двух IP-адресах на этом хосте.

/srv/www1/docker-compose.yml:

nginx:
  image: nginx:mainline-alpine
  container_name: www1
  ports:
    - "69.69.69.1:80:80/tcp"
    - "69.69.69.1:443:443/tcp"

/srv/www2/docker-compose.yml:

nginx:
  image: nginx:mainline-alpine
  container_name: www2
  ports:
    - "69.69.69.2:80:80/tcp"
    - "69.69.69.2:443:443/tcp"

ИлиПервый контейнер может запуститься без проблем, но если я попытаюсь запустить второй контейнер ( www2например), пока первый уже запущен, первый контейнер остановится и возникнет эта ошибка:

WARNING: Found orphan containers (www1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.

Нет, это не тот же контейнер, docker-compose.ymlфайлы даже не в том же каталоге. Похоже, что docker использует поля image:и ports:дляидентифицироватьконтейнеры, но игнорирует IP-адреса.

Это баг? Как заставить это работать?

решение1

Запуск контейнеров из одного файла docker-compose работает.

/srv/www/docker-compose.yml:

version: '3'
services:

    nginx1:
      image: nginx:mainline-alpine
      container_name: www1
      ports:
        - "69.69.69.1:80:80/tcp"
        - "69.69.69.1:443:443/tcp"
    
    nginx2:
      image: nginx:mainline-alpine
      container_name: www2
      ports:
        - "69.69.69.2:80:80/tcp"
        - "69.69.69.2:443:443/tcp"

Проверьте это с помощью ss:

# ss -tln | grep ':80 \|:443 '
LISTEN 0      4096           69.69.69.1:443        0.0.0.0:*          
LISTEN 0      4096           69.69.69.2:443        0.0.0.0:*          
LISTEN 0      4096           69.69.69.1:80         0.0.0.0:*          
LISTEN 0      4096           69.69.69.2:80         0.0.0.0:*

Связанный контент