容器之间的互联
一. 实验目的:
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
 

docker 容器之间互联的更多相关文章

  1. 如何在Docker容器之间拷贝数据

    [编者的话]在容器之间拷贝数据是Docker一个重要而且基本的功能.拷贝数据到其他容器是一个经常使用到的场景,如当服务器遇到不可预见的“灾难”(注:断电,宕机)时,起到备份数据的作用.本文作者详细介绍 ...

  2. Docker学习笔记 - Docker容器之间的连接

    学习目标: 容器之间可以相互连接访问:: --link redis:redisAlias 准备工作 FROM ubuntu:14.04 RUN apt-get install -y ping RUN  ...

  3. Docker容器如何互联

    容器的连接(linking)系统是除了端口映射外,另一种跟容器中应用交互的方式. 该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息. 自定义容器命名 连接系统依据容器的名称来执 ...

  4. MacOS下解决宿主机和docker容器之间网络互通

    docker在Mac下使用非常方便,官网提供了desktop版本的可视化软件,甚至还十分贴心地集成好了k8s套件.然而如果想同时部署和使用多个容器,每个容器不使用127.0.0.1地址,而是各自有ip ...

  5. docker容器之间的通信

    容器之间互通 新建两个容器 docker run -d --name box1 busybox /bin/sh -c "while true;do sleep 3600;done" ...

  6. 如何使用数据卷在宿主机和docker容器之间共享文件

    共享宿主机的目录给容器 docker run -i -t -v ~/download:/home/hello python3-env /bin/bash -v  表示创建一个数据卷并挂载到容器里 ~/ ...

  7. 15 docker 网络 docker 容器之间的关系 docker link

    1.案例:使用 link 关联后台与数据库 创建 test1 容器 docker run -d --name test1 busybox /bin/sh -c "while true; do ...

  8. docker容器之间通过bridge进行通信

    创建用户自定义bridge docker network create my-net # 创建了一个名为"my-net"的网络 将容器加入到"my-net"中 ...

  9. Docker: Docker容器之间互相通信

    最简单的方法,关闭防火墙(只建议用于开发环境) systemctl stop firewalld

随机推荐

  1. SQL Server 根据日期分组、 根据时间段分组(每三个小时一组)

    所用数据表: 一.根据日期分组 1. 使用convert() 函数方式 --根据年月 ),CreatTime,)日期,COUNT(*) 次数,sum(Money)总数 from Orders ),Cr ...

  2. web项目超时方案

    1. 场景描述 平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制:二是不限制,但是到一定 ...

  3. ~~在python中踩过的坑以及问题~~(不断更新)

    python说简单也不难,但是在这其中大大小小的点 真的是有够折磨人欸!  1.   input 输入的时候,即使输入的是数字,数据类型也是字符串   2.   字符串本质上来看可以看作有序数组  3 ...

  4. 【最小生成树之Kruskal算法】

    看完之后推荐再看一看[最小生成树之Prim算法]-C++ 定义:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.最小生成树可以用kr ...

  5. pip install xxxx报错(一大堆红色exception)【解决】

    安装个distribute或nose或lpthw.web或virtualenv 都可能出现下面问题   root@kali:~# pip install distribute Collecting d ...

  6. tomcat不需要重启热部署xml文件

    项目中,遇到情况,有时候增加struts的配置了,有时候粗心改错了,然后急需要发布线上吧,又不能重启影响其他的,最后发现struts有这个功能呢! 在struts.xml的配置文件中加上一句话就行 & ...

  7. [leetcode]914. X of a Kind in a Deck of Cards (easy)

    原题 题目原意可转换为 两组有大于等于2的公因数 /** * @param {number[]} deck * @return {boolean} */ var hasGroupsSizeX = fu ...

  8. Python入门基础(9)__面向对象编程_3

    继承 子类自动继承父类的所有方法和属性 继承的语法: class 类名(父类名) pass 1.子类继承父类,可以直接使用父类中已经封装好的方法,不需要再次开发 2.子类可以根据需求,封装自己特有的属 ...

  9. 研究分布式唯一ID生成,看完这篇就够

    很多大的互联网公司数据量很大,都采用分库分表,那么分库后就需要统一的唯一ID进行存储.这个ID可以是数字递增的,也可以是UUID类型的. 如果是递增的话,那么拆分了数据库后,可以按照id的hash,均 ...

  10. 如何简单地利用Bitmap为中介储存图片到数据库中

        这是我的第一篇博文,请大家多多指教!     大概一个月之前,在跟朋友合作开发一个APP的过程中,我们发现到一个问题:图片的存储.因为数据库没有图片这种数据类型,当用户上传的图片需要存储的时候 ...