docker学习(五)docker容器的互联

docker容器的互联

准备的docker容器环境

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

docker容器互联的默认方式

--icc=true 默认(允许连接)

当停止一个容器后容器的ip地址会改变

容器重启后可以继续访问

解决因为重启IP改变连接不变的问题

使用link选项

包含了容器名以及我们希望为这个容器指定的代号,

$docker run --link=[CONTAINER_NAME]:[ALIAS] [IMAGE] [COMMOND]

如果指定了link选项,我们就可以在新启动的容器中,以我们所指定的代号来访问相应的容器。避免因为ip地址的变化而带来的影响

例子:
$docker run -it --name 容器名 --link=要连接的容器:给要连接容器起的别名 镜像名称
这时在新的容器中就可以通过别名进行访问

ping 要连接容器的别名

link造成的影响

1.在容器启动时docker添加了一些环境变量 evn可以查看
2.docker添加了新容器的地址映射 vim /etc/hosts

重启容器后发现,还可以使用别名连接。但是hosts文件里面的ip映射发生了改变。(当重启后,docker会自动更改环境变量、ip地址和指定的别名之间的映射)

拒绝容器之间的连接

--icc=false

1.修改docker启动配置文件

$sudo vim /etc/default/docker

2.在末尾添加配置

DOCKER_OPTS=" --icc=false"

3.重启docker的服务

$sudo service docker restart

4.查看配置是否使用

$ps -ef | grep docker

允许特定的容器间的连接

需要三个配置

1.--icc=false
2.--iptables=true(linux中用来控制网络访问的)
3.运行容器时使用 --link(以前采用link选项的在允许特定访问配置后还可以正常访问)
原理:docker运用iptables中的机制,在icc等于false时。阻断docker中容器之间的访问,仅仅允许利用link选项配置的容器进行相互的访问

操作流程:

1.修改docker启动配置文件

$sudo vim /etc/default/docker

2.添加--iptables的设置

DOCKER_OPTS=" --icc=false --iptables=true"

3.重启docker的服务

$sudo service docker restart

4.查看配置是否使用

$ps -ef | grep docker

5.利用link选项运行一个新容器

$docker run -it --name cct4 --link=cct1:webtest jingxiang

配置后不能访问解决:

1.查看宿主机的iptaables

$sudo iptables -L -n
(第一项FOREARD,docker不是第一个)

2.清空iptaables设置

$sudo iptables -F

3.查看宿主机的iptaables

$sudo iptables -L -n
(刚才的设置已经没有)

4.重启docker的服务

$sudo service docker restart

5.查看宿主机的iptaables

$sudo iptables -L -n
(docker 已经归在第一位)

6.启动docker容器
7.curl 容器别名就可以正常访问

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,605评论 0 120
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,862评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则...
    XYZ7阅读 3,080评论 0 0
  • 在 Sass 中也具有继承一说,也是继承类中的样式代码块。在 Sass 中是通过关键词 “@extend”来继承已...
    Lia代码猪崽阅读 257评论 0 0