docker容器的网络连接

docker容器的网络连接

 

楼主因为刚开始学docker,如果这个时候就接触大量的概念,理论知识,肯定会反感的,咱们先来实践

 

sudo apt-get install -y bridge-utils


这个命令安装一个网桥管理程序.

 

首先解决一下在容器中好多命令whereis不到的情况,先说一下问题,楼主使用

root@syx-VB:~# docker run -it --name "test" ubuntu /bin/bash


构建了一个容器,但是进入容器之后楼主想看一下这个容器的IP地址,查看IP地址的话,我在地铁上的一本杂志上看到过,使用ifconfig,想不多坐地铁还是挺有用的.结果楼主万万没想到的:

bash: ifconfig: command not found


于是楼主想whereis一下ifconfig(这也是在那本杂志上看见的).

root@syx-VB:~# whereis ifconfig
ifconfig:


呵呵!!!

 

楼主开始了漫长的搜索和询问.有个大神告诉楼主,可能是因为楼主的脑子不适合学docker,让楼主放弃...

第二个大神说让楼主试一下其他的命令可不可用,楼主试了ping命令,发现和ifconfig出现的情况相同,觉得人生真的一点意思也没有!!!

 

第三个大神告诉楼主先运行:


 

因为数据容器啥都没有是正常的,这个啥都没有楼主觉得应该包括命令...所以先试试大神说的这个命令,楼主不知道怎么

apt-get update

回事 , 不管怎么样 , 楼主的宿主机也好 , 容器也好 , 只要一从网上 pull 东西 , 就成了龟速 , 问了问别人 , 发现别人都很快 !!!WHY, 楼主不服 . 为啥人家弄的 Dockerfile,buile 一下 只需要 5S 左右 , 楼主才两句命令行就需要半个小时 !!! 如果有大神能看到楼主的抱怨 , 希望能告诉楼主解决方案 !!! 谢谢了 , 真的给你跪下都没问题 .

 

在研究为啥容器中部分命令无法使用的时候,楼主有学了好多的东西,比如使用VirtualBox文件共享,删除容器,移动文件的命令.楼主加了一个docker,在里面不敢大神说话,害怕贱驴技穷...大神们说winscp,xshell,xftp的东西,我只能默默的看着他们装B,大神们让楼主把容器导出来给他们看一下.

 

Docker容器的互联

 

Docker容器在默认情况下是可以互相连接的.演示一下:

1.先构建一个自己的Dockerfile:

FROM ubuntu
RUN apt-get install -y ping
RUN apt-get update
RUN apt-get install -y nginx
RUN apt-get isntall -y curl
EXPOSE 80
CMD /bin/bash


2.使用自己的Dockerfile构建一个镜像

docker build -t=“syx/docker_images” .


注意一下,这个.表示当前目录下的Dockerfile

3.使用自己的镜像构建两个容器并查看两个容器的ip地址:

docker run -it --name “syx/contain1” syx/docker_images
ifconfig

docker run -it --name “syx/contain2” syx/docker_images

ifconfig

运行nginx服务

4.在容器2上使用ping命令测试能够ping同容器1.


5.或者在容器2上使用curl命令:

curl http://容器1的ip地址


 

备注一下,因为楼主的PING命令无法使用,所以楼主这个实验是做不成了,只能把相关的过程发出来,等到楼主以后搞定了为啥ping命令不能使用了,在来给大家说说在实验过程中出现的问题.

 

这个实验的目的是证明在同一个宿主机上两个容器是可以相互访问的.但是当停止一个容器再重启一个容器的时候,容器的ip地址是变化的.

 

互联的情况就不多少了,主要看一拒绝互联的情况:

vim /etc/default/docker


添加:

DOCKER_OPTS=”  -icc=false”


重启docker服务

 

在少数情况下,我们需要允许特定容器之间的互联:

vim /etc/default/docker


添加:

DOCKER_OPTS=”--icc=false --iptables=true ”


重启docker服务

此时运行一个新的容器:

docker run -it --name syx/NewContain --link=contain1:webtest syx/docker_images


这个时候使用

curl webtest(需要先启动syx/contain1nginx服务)

如果不能连接,需要先将iptables的设置清空:

sudo iptables -F

重启docker服务

重启docker容器,这个时候使用attach syx/contain1,启动nginx,attach Syx/NewContain,使用curl webtest应该可以和syx/contain互联了.

 

如果这个时候使用syx/contain2curl syx/contain1是不能实现互联的.

 

为什么会出现这种情况呢,因为我们使用--link选项.

 

 
容器与外部网络的连接

ps -ef | grep docker


查看docker守护进程是否运行.

 

前面说的那个iptables选项是与linux内核集成的包过滤防护墙系统.几乎所有的linux都会包含iptables的功能.

可以使用whereis iptables查看一下iptables的位置.

 

具体的iptables的介绍,因为楼主没明白,所以不在这里瞎BB.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值