docker中如何把容器连接起来

53次阅读
没有评论

共计 1585 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 docker 中如何把容器连接起来,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

docker 官方的资料中提到用一个 training/postgre 镜像启动一个父容器,但是我的不知为啥,容器自己停掉了。我直接 commit 一个新的容器算了

在这里补充一下 commit 容器的做法:

先从 image 启动容器:

docker run -t -i training/webapp /bin/bash

作为测试,我没干什么修改,直接返回宿主机 commit:

root@046a0ea81e8a:/opt/webapp# exit
exit

commit 容器:

docker commit -m= Nothing to do  -a= Hochikong  046a0ea81e8a newimage/webapp:v1

总之你记住之前的容器的 ID,在 commit 时会用到。- m 作为 commit 的信息补充,- a 指定作者,后面的 newimage/webapp 是新的 image 名,v1 是 tag。

结果如下:

root@workgroup:~# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
newimage/webapp v1 7ef236b535c8 4 seconds ago 278.8 MB
webapp/ntpplus v1 18d60ce37ee5 41 hours ago 316.9 MB
hochikong/erbuntu v1 e3095ca4cf38 13 days ago 368.3 MB
dbehnke/ubuntu1404 latest 31c0939ea86c 5 weeks ago 368.3 MB
training/postgres latest 258105bea10d 11 weeks ago 364.6 MB
training/webapp latest 31fa814ba25a 12 weeks ago 278.8 MB

回到正题:

我们先创建一个基本容器(父容器):

docker 中如何把容器连接起来

使用 –name 为容器命名(每个容器都的名字都必须是独一无二的,不可重复)为 base

再运行一个容器,命名为 web,使用 –link 连接到 base 上,wbconc 是这个连接的名称,同时为了防止端口冲突,我用 - p 使主机的 1000 端口绑定到容器的 5000 端口上:

docker 中如何把容器连接起来

我还运行了一个(玩玩),名为 web2,连接名称为 wbconc2:

docker 中如何把容器连接起来

查看我的容器状态:

docker 中如何把容器连接起来

可以看到,在容器 base 的 NAME 一栏,多出 web/wbconc 和 web2/wbconc2 两项,在 / 前的是子容器的名称(即 web 和 web2),后面的是这个连接的名称(wbconc 和 webconc2),他们的父容器是 base。

在这篇翻译中,‍‍‍http://www.widuu.com/chinese_docker/userguide/dockerlinks.html

有几项错误和不太相同的地方,我使用 nsenter 连接容器,但是并没有看到容器的 hosts 文件像原文所说的那样被修改。问题就出现了。

我先获取三个容器的 Pid(本人不会 JSON 解析,直接用 grep):

docker 中如何把容器连接起来

docker 中如何把容器连接起来

docker 中如何把容器连接起来

用 nsenter 进入 base 容器(关于安装 nsenter,请参考我之前一篇博文):

docker 中如何把容器连接起来

可以看到容器的 IP 地址,虽然 ping 是能 ping 得通其他容器,但是无法为他们设置 hosts,蛋疼啊。有木有人能解决下这个问题,如果不行,需要 DNS 吗?太麻烦了!

docker 中如何把容器连接起来

hosts 文件根本就没有原文提到的内容。不知它何来的 hosts

关于“docker 中如何把容器连接起来”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1585字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)