专栏首页测试技术圈Docker 容器连接

Docker 容器连接

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

网络端口映射

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

本文分享自微信公众号 - V社 北京社(SoftwareTesters)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker 运行一个web服务:hello world

    这样通过docker ps可以看到后面有一个0.0.0.0:32769->5000/tcp,这就说明Docker 开放了 5000 端口(默认 Python F...

    Criss@陈磊
  • Docker入门

    上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解

    Criss@陈磊
  • Jmeter Grafana监控资源

    Jmeter 原生的监控图形比较丑,最近在查找资源时发现Granfana 监控面板效果很好看,图形化界面监控指标,也适合在性能测试报告中使用,比如这样的

    Criss@陈磊
  • Docker 常用命令速查手册

    记录一下docker的日常使用命令,本文主要针对linux + mac操作系统而言,window是否适用不太确定,谨慎使用

    一灰灰blog
  • docker学习系列4 简单总结 docker-curriculum

    来源:https://docker-curriculum.com/ 这篇文章不错,可以作为第一篇 docker 的入门,我简单总结了下。顺便重温下之前的内容。...

    mafeifan
  • 浅析Docker运行安全

    AppArmor 主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。

    FB客服
  • Docker循序渐进

    上一篇的演示中使用的都是默认登录了Root权限后的操作,而实际的开发运维情况下,我们一般极少使用Root权限,所以Docker提供了一个权限组,我们只需要把当前...

    李郑
  • Docker 循序渐进

    上一篇大致介绍了什么是Docker和其安装(以Ubuntu为例)。这篇来说说,Docker的基本操作。 非Root用户授权 上一篇的演示中使用的都是默认登...

    李郑
  • 25. Flask 数据库迁移 flask-migrate

    在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。

    Devops海洋的渔夫
  • mongodb管理篇

    一、  管理工具集 数据迁移 Mongoexport:用于针对colletions的数据导出,或者打开单个字段。 Mongodbimport:与只对应,这个表示...

    一夕如环

扫码关注云+社区

领取腾讯云代金券