Как установить статический IP-адрес по умолчанию для VNC (debian-icewm-vnc), который работает в Docker?

Я запускаю VNC в контейнере с помощью docker-compose и подключаюсь к нему извне, однако каждый раз после перезапуска у VNC изменяется IP-адрес на <a href="">http://172.18.0.[1-9]:6901</a> (что происходит при каждом ci/cd деплое). Мне необходимо настроить статический IP-адрес, так как требуется связать его с реверс-прокси. Также хотелось бы узнать, как изменить пароль подключения по умолчанию. 

Вот мой Dockerfile: 
<pre><code>FROM consol/debian-icewm-vnc 
WORKDIR  /app 
USER 0 
RUN apt-get remove -y chromium 
...</code></pre> 

И docker-compose.yaml: 
<pre><code>...
  microservices:
    environment:
      - PYTHONUNBUFFERED=1
    build:
      context: ./microservices
      dockerfile: Dockerfile
    container_name: microservices
    ports: 
      - '5500:5500'
    volumes:
      - ./microservices/.env:/app/.env
...</code></pre>
  • 14 октября 2024 г. 7:52
Ответы на вопрос 2
Для настройки статического IP-адреса и изменения пароля подключения для VNC в контейнере Docker, вы можете воспользоваться различными подходами. Вот шаги, которые вам помогут в решении этой задачи.

### 1. Настройка статического IP-адреса

Для установки статического IP-адреса в Docker, вы можете использовать `docker-compose` с настройкой пользовательской сети. Вот как это может выглядеть:

1. Создайте пользовательскую сеть в вашем `docker-compose.yaml`:

```yaml
version: '3.8'

services:
  microservices:
    build:
      context: ./microservices
      dockerfile: Dockerfile
    container_name: microservices
    environment:
      - PYTHONUNBUFFERED=1
    networks:
      my_network:
        ipv4_address: 172.18.0.10  # Укажите ваш желаемый статический IP
    ports: 
      - '5500:5500'
    volumes:
      - ./microservices/.env:/app/.env

networks:
  my_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16  # Укажите вашу подсеть
```

### 2. Изменение пароля для VNC

Чтобы изменить пароль подключения для VNC, вам нужно будет настроить это в вашем Dockerfile или при запуске контейнера. Обычно это делается с помощью команды `vncpasswd`. Вот пример, как вы можете сделать это в вашем Dockerfile:

```Dockerfile
FROM consol/debian-icewm-vnc
WORKDIR /app
USER root

# Установите новый пароль
RUN echo "your_password" | vncpasswd -f > /home/vnc/.vnc/passwd && \
    chmod 0600 /home/vnc/.vnc/passwd

# Остальные команды...
USER vnc
```

### Полный пример вашего `docker-compose.yaml`

```yaml
version: '3.8'

services:
  microservices:
    build:
      context: ./microservices
      dockerfile: Dockerfile
    container_name: microservices
    environment:
      - PYTHONUNBUFFERED=1
    networks:
      my_network:
        ipv4_address: 172.18.0.10
    ports: 
      - '5500:5500'
    volumes:
      - ./microservices/.env:/app/.env

networks:
  my_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16
```

### Заключение

После внесения этих изменений, когда вы будете запускать свой контейнер с помощью `docker-compose up`, ваш VNC сервер будет доступен по указанному статическому IP адресу, а также будет использовать заданный пароль для подключения. Не забудьте перезагрузить Docker контейнеры после изменений конфигурации.
Выдача статических адресов доступна только в пользовательских docker network. Это и в документации есть. 
Создайте себе сеть, подключите к ней контейнер и сможете выдавать статические адреса.
Похожие вопросы