Home  >  Article  >  Operation and Maintenance  >  How to access between containers in docker

How to access between containers in docker

尚
Original
2020-03-24 16:09:355287browse

How to access between containers in docker

We all know that docker containers are isolated from each other and cannot access each other, but what should we do if there are some dependent services. The following describes three methods to solve the problem of container mutual access.

Method 1, virtual ip access

When installing docker, docker will create an internal bridge network docker0 by default. Each container created is assigned a virtual network card, and the containers can access each other based on ip. .

[root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig
......
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:35ff:feac:66d8  prefixlen 64  scopeid 0x20<link>
        ether 02:42:35:ac:66:d8  txqueuelen 0  (Ethernet)
        RX packets 4018  bytes 266467 (260.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4226  bytes 33935667 (32.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
......

Method 2, link

Add parameter link when running the container

Run the first container

docker run -it --name centos-1 docker.io/centos:latest

Run the second container

[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest

--link: The first centos-1 in the parameter is the container name, and the second centos-1 is the defined container alias (use the alias to access the container). For ease of use, generally the alias defaults to the container name.

The test results are as follows:

[root@e0841aa13c5b /]# ping centos-1
PING centos-1 (172.17.0.7) 56(84) bytes of data.
bytes from centos-1 (172.17.0.7): icmp_seq=1 ttl=64 time=0.210 ms
bytes from centos-1 (172.17.0.7): icmp_seq=2 ttl=64 time=0.116 ms
bytes from centos-1 (172.17.0.7): icmp_seq=3 ttl=64 time=0.112 ms
bytes from centos-1 (172.17.0.7): icmp_seq=4 ttl=64 time=0.114 ms

Method 3. Create a bridge network

1. After installing docker, run the following command to create a bridge network: docker network create testnet

Query the newly created bridge testnet.

How to access between containers in docker

#2. Run the container and connect to the testnet network.

Usage: docker run -it --name ---network --network-alias

[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest
[root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest

3. Ping from one container to another container, the test results are as follows:

[root@fafe2622f2af /]# ping centos-1
PING centos-1 (172.20.0.2) 56(84) bytes of data.
bytes from centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 time=0.158 ms
bytes from centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 time=0.108 ms
bytes from centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 time=0.112 ms
bytes from centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 time=0.113 ms

For more related tutorials, please pay attention to the docker tutorial column on the PHP Chinese website.

The above is the detailed content of How to access between containers in docker. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn