Communication methods between containers in Docker: 1. Use the container ip to access; 2. Use the host’s “ip:port” to access; 3. Use link to establish a connection for communication; 4. Use “User-defined networks" to communicate.
The operating environment of this tutorial: linux7.3 system, docker-1.13.1 version, Dell G3 computer.
1. Access through the container ip
After the container is restarted, the ip will change. Accessing via container IP is not a good solution.
2. Access through the host's ip:port
Access through the host's ip:port can only rely on the process listening on the exposed port for limited communication.
3. Establish a connection through link (officially not recommended)
When running a container, specify the parameter link so that the source container and the linked container can communicate with each other, and the accepted container can Obtain some data from the source container, such as environment variables.
# 源容器:mysql docker run -itd --name test-mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7 #被链接容器 centos docker run -itd --name test-centos --link test-mysql:mysql centos /bin/bash #进入test-centos docker exec -it test-centos /bin/bash
You can enter directly through the link name or the alias you took when linking:
Establish a connection through link The linked container can ping the source container, but not the other way around.
View environment variables on the linked container
#The linked container will inherit the environment variable information of the source container.
Unlike host entries in /etc/hosts, the IP address stored in the environment variable is not automatically updated if the source container is restarted. We recommend using the host entry in /etc/hosts to resolve the IP address of the linked container.
In addition to environment variables, Docker also adds the source container’s host entry to the /etc/hosts file.
If the source container is restarted, the /etc/hosts file on the link container will be automatically updated with the source container's new IP address, allowing link communication to continue.
4. Create a bridge network through User-defined networks (recommended)
docker network, and assign the container to the newly created bridge network when docker run, so that the same bridge network Containers in can access each other.
Create network
docker network create test-network
When starting the container, join the created network
docker run -it --network test-network --network-alias mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
Start the linked container
docker run -it --network test-network --network-alias centos centos /bin/bash
Recommended learning: "docker video tutorial"
The above is the detailed content of What are the communication methods between containers in Docker?. For more information, please follow other related articles on the PHP Chinese website!