Контейнер в открытом доступе другой контейнер в той же капсуле Kubernetes
В стручке Kubernetes у меня есть:
busybox
контейнер работает вdind
контейнерfluentd
контейнер
Я понимаю, если dind
хочет получить доступ fluentd
, он должен просто подключиться к localhost:9880. Но что, если busybox
хочет получить доступ fluentd
как показано на рисунке ниже. Какой адрес мне следует использовать?
0 ответов
Эти советы могут вам помочь:
1. Первый подход
Изнутри контейнера docker:latest, откуда вы пытались получить к нему доступ изначально, он будет доступен на любом имени хоста, установленном для контейнера docker:dind. В этом случае вы использовали --name dind, поэтому curl dind:busybox_port предоставит вам стандарт.
И затем вы можете из контейнера docker:dind (busybox) подключиться к fluentd, он будет доступен на localhost:9880.
2. Второй подход
Другой подход - EXPOSE [/
$ docker run --expose=1234 busybox
Но EXPOSE не разрешает связь через определенные порты с контейнерами за пределами той же сети или с хост-машиной. Чтобы это произошло, вам необходимо опубликовать порты.
Опубликуйте порты и сопоставьте их с хостом
Чтобы опубликовать порт при запуске контейнера, используйте флаг -p при запуске докера для публикации и сопоставления одного или нескольких портов или флаг -P, чтобы опубликовать все открытые порты и сопоставить их с портами высокого порядка.
$ docker run -p 80:80/tcp -p 80:80/udp busybox
А затем подключитесь из busybox к fluentd, используя localhost:9880
Вы можете найти дополнительную информацию здесь: docker-in-docker
.
Я надеюсь, что это помогает.