Dodker之容器互联实现容器间通信

自定义容器名

连接系统依据容器名称执行,所以首先需要自定义容器名称。

使用--name标记可以为容器自定义名称:

[root@centos7 ~]# docker run -d --name mysqldb -p3306:3306 -e MYSQL_ROOT_PASSWORD=fanshine mysql/mysql-server

使用docker ps 查看容器的命名:image.png

也可以使用docker inspect来查看容器名称:

[root@centos7 ~]# docker inspect -f "{{ .Name }}" bf3bacf5c91d

注意:容器名称是唯一的,如果创建了mysqldb,需要在此创建需要将同名容器删除掉在去创建。

容器互联

容器互联大体有以下三种方式,使用link进行容器互联:

  • 基于volume的互联

  • 基于link的互联

  • 基于网络的互联

使用--link参数让容器间进行交互:

首先创建数据库容器:

[root@centos7 ~]# docker run -d --name mysqldb -p3306:3306 -e MYSQL_ROOT_PASSWORD=fanshine mysql/mysql-server

然后创建web容器,并将其连接到db容器:

[root@centos7 ~]# docker run -d -p 80:80 --name nginxweb --link mysqldb:mysqldb  nginx/nginx-server

此时web容器与db容器建立了互联关系。

注意:--link参数格式为--link name:alias,其中name是要链接的容器名称,alias是这个连接的名称。

Docker通过两种方式为容器公开连接信息:

  • 环境变量

  • 更新/etc/hosts文件

使用env命令查看web容器的环境变量:

[root@centos7 ~]# docker run --rm --name nginxweb3 --link mysqldb:mysqldb  nginx/nginx-server env[object Object]

其中MYSQLDB_开头的环境变量是供web容器连接db容器使用。

登陆web容器ping通mysqldb:image.png

猜你喜欢

转载自blog.51cto.com/bovin/2170589