[Docker] Método de comunicação entre contêineres no docker


点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情)

1. O principal método de comunicação entre contêineres Docker

1.1 Acesso através de IP do contêiner

Depois que o contêiner for reiniciado, o IP mudará. Acessar via IP do contêiner não é uma boa solução.

1.2. Acesso através do ip:port do host

O acesso através do host ip:portsó pode contar com processos que escutam em portas expostas para comunicação limitada.

A comunicação entre contêineres não pode ser usada localhost, 127.0.0.1apenas a comunicação do host pode ser usada ip:port, mas o endereço IP do host mudará com a reinicialização do host

Veja o contêiner MySQL como exemplo:

  • Criar contêiner
docker run -it -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
  • O host acessa diretamente a porta exposta

Conforme mostrado na figura abaixo, a forma de expor a porta é muito conveniente para a comunicação entre o host e o container, que é o mesmo que conectar-se ao host localmente

1.3. Estabeleça uma conexão através de link (oficialmente não é mais recomendado)

Ao executar um contêiner, especifique o parâmetro link para que o contêiner de origem e o contêiner vinculado possam se comunicar entre si, e o contêiner aceito possa obter alguns dados do contêiner de origem, como variáveis ​​de ambiente.

# 源容器:mysql
docker run -itd --name mysql_test -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#被链接容器 ubuntu
docker run -itd --name ubuntu_test --link test-mysql:mysql  ubuntu /bin/bash
#进入test-ubuntu
docker exec -it ubuntu_test /bin/bash

1.4. Através de redes definidas pelo usuário (recomendado)

Através da rede definida pelo utilizador, os contentores que aderiram a esta rede podem comunicar entre si, 容器名称podendo aceder-se através dela, o que equivale a estar na mesma rede local.

É recomendado configurar contêineres recém-criados -pe arquivos --network.

Configure opções para permitir a comunicação -pentre o host e o contêiner via暴露端口

A --networkopção de configuração permite que os contêineres ingressem na mesma rede e, após ingressarem na mesma rede, possam se comunicar pelo nome do contêiner.

Tomemos como exemplo a comunicação centoscom contêineres:mysql

  • Criar rede

rede docker para criar uma rede de ponte e atribuir o contêiner à rede de ponte recém-criada quando o docker for executado, para que os contêineres na mesma rede de ponte possam acessar uns aos outros.

docker network create dockerbetweennetwork
  • Ao iniciar o contêiner mysql, junte-se à rede criada

Crie um contêiner mysql para ingressar na rede dockerbetweennetwork e também exponha a porta 3306 ao host

# 创建mysql容器
docker run -p 3306:3306 --name mysql \
--network dockerbetweennetwork \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
  • Ao iniciar o contêiner centos, entre na rede criada
# 创建centos容器
docker run -it --name centos \
--network dockerbetweennetwork \
--rm centos /bin/bash

Um contêiner docker semelhante a um servidor, como o centos, deve acompanhar o comando, caso contrário, ele será encerrado por padrão;

  • Veja o endereço IP do contêiner mysql
# 查看mysql容器ip地址
docker inspect mysql

  • Entre no contêiner centos e conecte-se ao mysql

Teste se você pode executar ping no contêiner mysql pelo nome do contêiner.

# 进入centos容器中
docker exec -it centos /bin/bash
# ping 上面得到的mysql容器的地址
ping mysql

2. Referências

Meu artigo: "Como verificar qual versão uma imagem Docker possui.md"

Meu artigo: "Docker Setting Domestic Image Source.md"

Meu artigo: "Tutorial prático de início rápido do Docker.md"

Meu artigo: "Docker instala MySQL, Redis, RabbitMQ, Elasticsearch, Nacos e outros serviços comuns.md"

Meu artigo: "Docker instala Nacos service.md"

Meu artigo: "Como modificar o arquivo.md no Docker"

Meu artigo: "Conexão ou comunicação entre Docker containers.md"

Meu artigo: "Como persistir dados do banco de dados com MySQL instalado por Docker.md"

Meu artigo: "Tornando o Docker Private Repository.md"

Meu artigo: "Usando o plug-in docker-maven-plugin para construir e publicar imagens push em private warehouses.md"

Meu artigo: "Resolvendo a falha do Docker ao acessar a porta 9200 após instalar o Elasticsearch.md"


Portal: análise de código-fonte Spring5 estilo Nanny

Bem-vindo ao intercâmbio de tecnologia e vida profissional com o autor

entre em contato com o autor

Acho que você gosta

Origin blog.csdn.net/yuchangyuan5237/article/details/131908975
Recomendado
Clasificación