Компания Docker, недавно купившая стартап SocketPlane, который реализует для контейнеров Docker технологию программно-управляемых сетей (SDN), поделилась планами в отношении дальнейшего развития своих продуктов.
В интервью InformationWeek старший вице-президент Docker Скотт Джонстон рассказал, что раньше компания использовала простой сетевой стек первого поколения, которого было достаточно для работы нескольких контейнеров на лаптопе или в тестовой среде.
С ростом популярности технологии Docker пользователи стали запускать приложения с сотнями или тысячами контейнеров на множестве хостов в дата-центрах. Поэтому потребовалась открытая сетевая архитектура и API-интерфейсы следующего поколения, которые позволяют решить проблемы масштабирования и учитывать недолговечную природу контейнеров.
SocketPlane создает виртуальные сети с помощью многоуровневого программного коммутатора Open vSwitch, который позволяет строить на базе технологии VXLAN туннели для соединения контейнеров Docker. При этом каждый контейнер имеет свой IP-адрес, который не меняется при изменении его местоположения. На каждом физическом хосте работает контейнер, который реализует коммутатор Open vSwitch и служит в качестве распределенного контроллера для виртуальной сети.
По словам Джонстона, технология SocketPlane не будет эксклюзивным механизмом для соединения контейнеров Docker. Другие разработчики сетевых решений, такие как Cisco, VMware, и СПО-проекты, например, Weave, смогут использовать API, созданные компанией SocketPlane, для подключения своих сетевых стеков. Он пояснил, что Docker купила SocketPlane не ради конкуренции с другими участниками сообщества Open Source, а для получения экспертизы, с помощью которой остальные смогут создавать открытые сетевые API.
Отвечая на вопрос, почему Docker не воспользовалась результатами сетевого проекта Neutron, который развивается в рамках OpenStack и обеспечивает SDN на уровне сервисов облака OpenStack, Джонстон объяснил, что огромные масштабы и динамический характер контейнеров и микросервисов создают определенные проблемы при работе в сетях. Основой OpenStack является виртуальная машина. Приложения, которые исполняются на виртуальной машине, могут взаимодействовать с десятками или несколькими сотнями других виртуальных машин. Но в контейнерном мире одно приложение может состоять из сотен и тысяч контейнеров. К тому же, когда создается виртуальная машина, то она остается в стабильном состоянии несколько недель или месяцев. Контейнер может жить всего минуту, может перемещаться с хоста на хост. Именно такая недолговечная природа отличает контейнеры от других технологий для построения распределенных приложений.