写点什么

Docker 容器连接

用户头像
陈磊@Criss
关注
发布于: 2020 年 08 月 12 日



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:http://blog.csdn.net/crisschan

容器间的链接有两种方法,你选择其一即可

网络端口映射



docker run -d -P

docker run -d -p



-P :是容器内部端口随机映射到主机的高端口。

-p : 是容器内部端口绑定到指定的主机端口。



例如:

docker run -d -P training/webapp python app.py



上面的命令运行完成后,要通过ps查看可以看到对应的容器端口和主机端口的映射关系。

docker run -d -p 5001:5000 training/webapp python app.py



这样我们就可以通过访问 127.0.0.1:5001(主机) 来访问容器的 5000 端口。这里面默认都是绑定TCP要绑定UDP如下命令:



docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py



Docker容器连接



端口映射并不是唯一把 docker 连接到另一个容器的方法。



docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。



docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

容器命名



docker run -d -P --name runoob training/webapp python app.py



通过--name设定容器名字



docker inspect -f "{{ .Name }}" aed84ee21bde

通过上述命令可以返回涌入名字。



容器不可以重名,一次要修改名字,需要停止容器后删除。



容器连接



如果要连接1个容器,需要先创建容器,然后通过--link连接。



docker run -d --name db training/postgres

创建数据库容器

docker run -d -P --name web --link db:db training/webapp python app.py



这样就完成了Web容器和DB容器连接到了一起。



--link name:alias



name是我们连接容器的名字,alias是link的别名。让我们看如何使用alias。



下面,我们通过ps查看一下:



$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

349169744e49 training/postgres:latest su postgres -c '/usr About a minute ago Up About a minute 5432/tcp db

aed84ee21bde training/webapp:latest python app.py 16 hours ago Up 2 minutes 0.0.0.0:49154->5000/tcp db/web,web



这里面在Names我们可以看到db/web,这说明db/web的父/子关系。这里的父容器是db可以访问子容器web。为此docker在容器之间打开一个安全连接隧道不需要暴露任何端口在容器外部。你会注意到当你启动db容器的时候我们没有使用-P或者-p标识。我们连接容器的时候我们不需要通过网络给PostgreSQL数据库开放端口。



这样我们可以通过查询Docker的环境变量就可以看到相关信息了(env命令查看容器的环境变量)



docker run --rm --name web2 --link db:db training/webapp env



这样就可以通过容器Names来引用对应容器。



PS:容器中往往没有ping,因此要自己添加apt-get install -yqq inetutils-ping



root@aed84ee21bde:/opt/webapp# ping db

PING db (172.17.0.5): 48 data bytes

56 bytes from 172.17.0.5: icmp_seq=0 ttl=64 time=0.267 ms

56 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.250 ms

56 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.256 ms



关注我,关注测试



发布于: 2020 年 08 月 12 日阅读数: 51
用户头像

陈磊@Criss

关注

测者观天下bugs 2018.03.11 加入

华为云MVP,阿里云MVP

评论

发布
暂无评论
Docker 容器连接