温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

docker中如何把容器连接起来

发布时间:2021-11-19 11:15:26 来源:亿速云 阅读:191 作者:小新 栏目:云计算

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI