Docker по умолчанию использует механизм сетевого моста (bridge network), который позволяет контейнерам общаться с внешним миром через IP-адрес хоста. Если вам нужно назначить определенный внешний IP для контейнера, то есть несколько способов это сделать:
### 1. Использование макета host network
Вы можете запустить контейнер в сетевом режиме хоста, используя параметр `--net=host` в команде `docker run`. Это даст контейнеру доступ ко всем интерфейсам сети хоста, но у вас не будет изоляции сети, которая обычно предоставляется Docker.
```sh
docker run --net=host -d ваш_образ
```
### 2. Использование пользовательских сетей с мостом и проброс портов
Если у вашего хоста несколько IP-адресов, и вы хотите привязать порты контейнера к определенному IP, вы можете это сделать при запуске контейнера, указав IP-адрес в опции `-p`.
```sh
docker run -p 203.0.113.5:80:80 -d ваш_образ
```
Это сообщает Docker пробросить порт 80 с внешнего IP-адреса 203.0.113.5 на порт 80 внутри контейнера.
### 3. Использование MacVLAN
MacVLAN может быть полезен, если вы хотите назначить контейнеру отдельный IP-адрес, который находится в вашей локальной сети, таким образом делая его напрямую доступным машинам в этой сети.
Сначала создайте MacVLAN сеть:
```sh
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 \
my_macvlan_net
```
Затем запустите контейнер, используя эту сеть:
```sh
docker run --network=my_macvlan_net --ip=192.168.1.2 -d ваш_образ
```
### 4. Использование IP aliasing на хост-системе
Вы можете настроить дополнительный IP-адрес на существующем интерфейсе вашего хоста с помощью `ip` или `ifconfig` в зависимости от вашей системы. После этого вы можете напрямую пробросить порты в этот IP-адрес:
```sh
sudo ip addr add 203.0.113.5/24 dev eth0
docker run -p 203.0.113.5:80:80 -d ваш_образ
```
**Обратите внимание**, что если вы используете IP aliasing, то вы должны обеспечить, чтобы фаервол и другие сетевые политики разрешали трафик на эти IP-адреса и порты.
Выбор подходящего метода зависит от ваших требований к сетевой изоляции, к конфигурации сети, и от того, какая уровень доступа и настройки вы можете выполнить на хостовом сервере.