Docker入门学习笔记 (四)

Docker入门学习笔记(四)

B站——【公开课】Docker入坑教程【33集】 庄七


14. Docker容器的网络连接


14. Docker容器的网络连接

  • Docker容器的网络基础

Docker入门学习笔记 (四)_第1张图片

docker0——Linux虚拟网桥

    Linux虚拟网桥:
        可以设置IP地址
        相当于拥有一个隐藏的虚拟网卡

    docker0 地址划分
        IP:172.17.42.1  子网掩码:255.255.0.0
        MAC:02:42:ac:11:00:00到02:42:ac:11:ff:ff
        总共提供了65534个地址
    
    安装网桥管理程序
        yum -y install bridge-utils
    查看网桥设备
        # brctl show

自定义Docker0

    修改docker0地址
    $ sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0

自定义虚拟网桥

    添加虚拟网桥
        $ sudo brctl addbr br0
        $ sudo ifconfig br0 192.168.100.1 netmask 255.255.255.0
    更改docker守护进程的启动配置
        /etc/default/docker 中添加DOCKER_OPTS值
        -b=br0
  • Docker容器的互联

环境准备

用于测试的Docker镜像Dockerfile:
    # ./cct/Dockerfile
    # container connection test
    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 build -t summer258/cct .

允许所有容器间互联

默认设置
--icc=true  默认

启动第一个容器
# docker run -it --name cct1 summer258/cct
/# nginx
Ctrl+P Ctrl+Q

启动第二个容器
# docker run -it --name cct2 summer258/cct
/# ifconfig
Ctrl+P Ctrl+Q

inet addr:172.17.0.3

连接到第一个容器cct1
# docker attach cct1
/# ifconfig

inet addr:172.17.0.2

测试连接:ping 172.0.3

连接到第一个容器cct2
# docker attach cct2
测试连接:curl http://172.17.0.2

--link
    # docker run --link=[CONTAINER_NAME]:[ALIAS] [IMAGE] [COMMAND]

启动第三个容器
# docker run -it --name cct3 --link=cct1:webtest summer258/cct
/# ping webtest

重启docker服务
    # systemctl restart docker
    # docker restart cct1 cct2 cct3
    /# ping webtest

拒绝所有容器间互联

Docker守护进程的启动选项
    DOCKER_OPTS= " --icc=false"

# ubuntu
$ sudo vim /etc/default/docker
    DOCKER_OPTS = "--icc=false"
# centos
$ sudo vim /etc/docker/daemon.json
    {
        …
        “icc”:false,
        …
    }


$ sudo systemctl restart docker
$ ps -ef | grep docker
$ sudo docker restart cct1 cct2 cct3
$ sudo docker attach cct3
/# ping webtest

允许特定容器间的连接

Docker守护进程的启动选项
    --icc=false --iptables=true
    --link

$ sudo iptables -F
$ sudo iptables -L -n
  • Docker容器与外部网络的连接

ip-forward

--ip-forward=true
    决定系统是否会转发流量

$ sudo sysctl net.ipv4.conf.all.forwarding

iptables

iptables是与Linux内核集成的包过滤防火墙系统,
几乎所有的Linux发行版本都会包含iptables的功能

Docker入门学习笔记 (四)_第2张图片

filter表中包含的链:
    INPUT
    FORWARD
    OUTPUT

$ sudo iptables -L -n

限制IP访问容器

$ sudo iptables -I DOCKER -s 10.211.55.3 -d 127.17.0.7 -p TCP --dport 80 j DROP

端口映射访问

你可能感兴趣的:(Docker)