Я только что опробовал Докера. Это потрясающе, но, похоже, не работает с UFW. По умолчанию докеры немного манипулируют iptables. Результат не ошибка, а не то, что я ожидал. Для более подробной информации вы можете прочитать Опасности UFW + Docker
Моя цель - создать такую систему, как
Host (running ufw) -> docker container 1 - nginx (as a reverse proxy)
-> docker container 2 - node web 1
-> docker container 3 - node web 2
-> .......
Я хочу управлять входящим трафиком (например, ограничивать доступ) через ufw, поэтому я не хочу, чтобы докер касался моих iptables. Вот мой тест
Окружающая среда:
- недавно установленный Ubuntu 14.04 (ядро: 3.13.0-53)
- Docker 1.6.2
- включена переадресация ufw. (Включить пересылку UFW)
--iptables=false
был добавлен к демону Docker.
Первая попытка
docker run --name ghost -v /home/xxxx/ghost_content:/var/lib/ghost -d ghost
docker run --name nginx -p 80:80 -v /home/xxxx/nginx_site_enable:/etc/nginx/conf.d:ro --link ghost:ghost -d nginx
Не повезло. Первая команда прекрасна, но вторая команда выдает ошибку
Error response from daemon: Cannot start container
Вторая попытка
Тогда я нашел это: не удалось связать контейнеры с --iptables = false # 12701
После выполнения следующей команды все выглядит нормально.
sudo iptables -N DOCKER
Однако я заметил, что я не могу установить исходящие соединения внутри контейнеров. Например:
[email protected]:~$ sudo docker exec -t -i nginx /bin/bash
[email protected]:/# ping 74.125.21.147
PING 74.125.21.147 (74.125.21.147): 56 data bytes
^C--- 74.125.21.147 ping statistics ---
35 packets transmitted, 0 packets received, 100% packet loss
[email protected]:/#
Если я удалю --iptables=false
из демона Docker, подключение к интернету будет возвращено к нормальному состоянию, но ufw не будет работать "правильно" (ну... по моему определению).
Итак, что такое лучшая практика docker + ufw? Может ли кто-нибудь помочь?
Спасибо.
Bart.