Diretório de artigos
点击跳转: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:port
só 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.1
apenas 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 -p
e arquivos --network
.
Configure opções para permitir a comunicação
-p
entre o host e o contêiner via暴露端口
A
--network
opçã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 centos
com 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