• docker 容器之间互联


    容器之间的互联
    一. 实验目的:
    1.       熟悉容器之间基本的网络原理;
    2.       掌握容器之间互联的方法
    二. 实验环境:
    Ubuntu16.04+Docker
    三. 实验内容:
    练习容器之间互联的方法
    四、 实验练习:
    1.      安装网桥管理工具,并且查看网桥设备
    ① 安装网桥管理工具
    apt-get install -y bridge-utils
    如果找不到,先使用apt-cache search bridge查找
     
    ② 查看网桥设备
    sudo brctl show
    (3) 开启一个容器
    ocker run -it --name test1 ubuntu:14.04 /bin/bash
    并查看docker网络情况 如果找不到命令command not found,因为docker轻量级运行,没有此命令,需要安装,解决办法:
    1)       Apt-get update更新索引
    2)       Apt-get install net-tools 安装ifconfig命令
    3)       Apt-get install iputils-ping 安装ping命令
    用ctrl+p+q退出但是保持容器的继续运行,并且查看网桥设备
    sudo brcrl show
    2.      查看在默认情况下,在同一宿主机中运行的所有容器都是互联的。
    环境准备:用于测试docker镜像的dockerfile
    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 catherine2005/cct .
     
    测试
    1. 启动一个容器cct1
    docker run -it --name cct1 catherine2005/cct
    1. 查看ip地址
    ifconfig 这个ip为:172.17.0.4
    3.启动nginx
    4.ctrl+P+Q转到后台
    5.启动一个容器cct2
    Docker run -it --name cct2 catherine2005/cct
    6 查看ip地址
    cct2的ip为172.17.0.5
    7.此时使用ping命令,查看是否能够ping通cct1
    8.使用curl ,看看nginx是否正常启动
    9.停止容器cct1,并且启动新的容器test01
     
    10.重启cct1并查看容器内的ip地址 发现变化了
    这说明docker不可靠,因为每次重启都可能导致ip地址发生变化
    3.      创建第三个容器时,将第三个容器link到第一个容器中,这样第三个容器访问第一个容器时利用名字就能访问。
    1 启动一个新容器cct3,并且使用link选项关联cct1,别名为webtest
    docker run -it --name cct3 --link=cct1:webtest catherine2005/cct
    2 使用ifconfig命令查看自己的ip
    3.使用ping命令来看看容器cct1的别名webtest是否可以ping通
    4.查看一下环境变量,可以看到大量以WEBTEST*开头的环境变量,这些环境变量是在容器启动时,由docker添加的
     
    5. 查看自己的环境映射
    6.Ctrl+p+q可以转后台
     
    7重启docker服务
    service doceker restart
    8.重启cct1 cct2 cct3
    docker restart cct1 cct2 cct3
    9.重新进入容器cct3
    docker attach cct3
    10.使用ping命令来看看容器cct1的别名webtest是否可以ping通
    11.再次查看一下自己的环境变量
    12. 查看自己的环境映射
    cat /etc/hosts
    4.      拒绝容器之间的互联
    编辑docker默认配置文件
    sudo vi /etc/default/docker
    在其中加上 :DOCKER_OPTS="--icc=false"
    ① 在/etc/systemd/system/multi-user.target.wants/docker.service 这个文件中加入和修改一下内容,在[Service]下添EnvironmentFile=-/etc/default/docker,在ExecStart=/usr/bin/docker daemon -H fd://后面加入$DOCKER_OPTS
    ②再次加载daemon
     systemctl daemon-reload
    3.重启docker 服务
    systemctl restart docker
    ④ 检查配置已修改
    ps -ef | grep docker
    5.启动两个容器
    sudo docker start cct1 cct2
    6.在cct2容器中ping容器cct1的ip(不可ping通)
    sudo ping <cct2-ip>
     
    5.      允许端口映射访问
    (1). # 使用filter表查看网络访问规则
    sudo iptables -t filter -L -n
    (2) 启动一个容器,并且指定容器开放的端口
    docker run -it -p 80 --name cct5 catherine2005/cct
     
    (3) 在容器内部启动nginx
    (4)CTRL+P+Q转到后台
    (5)使用ifconfig 查看本机的ip
    (6) 查看容器映射主机的端口 docker port cct5
    (7) 在本机上,curl http:127.0.0.1:32768(刚刚映射出来的端口号)
    (8)使用 iptables 查看规则变化
    sudo iptables -L -n
    (9) 使用 ifconfig查看虚拟机的ip地址
    (10) 换台虚拟机,使用下列命令查看cct5是否可以查看
    curl 192.168.35.132:32768
     
  • 相关阅读:
    一个996程序员的自述:在公司眼里你就是一个工具
    我国为何如此重视编程教育?少儿编程会纳入基础教学吗?
    自学 Python 到什么程度能找到工作,1300+ 条招聘信息告诉你答案
    Book
    BFS
    Word写论文公式输入
    matlab保存超分辨率图
    [转载]有价值的Paper
    Latex作图
    微软企业库5.0学习笔记(七)存储容器的引用
  • 原文地址:https://www.cnblogs.com/duyachao/p/11100647.html
Copyright © 2020-2023  润新知