美文网首页
docker学习(五)docker容器的互联

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

作者: 吃猫的鱼0 | 来源:发表于2018-02-02 11:18 被阅读0次

    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 容器别名就可以正常访问

    相关文章

      网友评论

          本文标题:docker学习(五)docker容器的互联

          本文链接:https://www.haomeiwen.com/subject/ffiszxtx.html