<从Docker到Kubernetes之技术实战>教程作业(四)

<从Docker到Kubernetes之技术实战>教程作业(四)

一. 研究下mysql的官方镜像里Volume的定义,以及说明为什们这么用

使用docker inspect 查看容器:


可以看到有一个 volume 对于 docker 中的/var/lib/mysql 目录, mysql 中这个目录用于存放 mysql 的日志文件, 由于日志文件需要频繁的进行写操作. 如果不使用 volume, 按照 docker 的分层机制, 每生成或修改一个日志文件都会生成一个层. 而使用 volume 则可以直接对宿主机的目录进行操作, 可以避免这种问题.

二. 研究下docker默认安装的IPtables规则分别都是做什么用途的

当启动 Docker 服务时候,默认会添加一条转发策略到 iptables 的 FORWARD 链上。策略为通过(ACCEPT)还是禁止(DROP)取决于配置--icc=true(缺省值)还是 --icc=false。当然,如果手动指定 --iptables=false 则不会添加 iptables 规则。

1. 启动 docker

docker daemon --icc=false --iptables=true

2. 启动两个端口映射的 ngxin container

docker run -ti -p 81:80 --name=nginx1 14dab3d40372

iptables -L -n 结果:

表示 本机只能访问到ip 为172.17.0.2的容器的80端口

#使用 link 关联启动的 ngxin1容器
docker run -ti -p 82:80 --name=nginx2 --link=nginx1:n1 14dab3d40372

这时docker 会自动增加3条规则:

本机可以访问 ip 为172.17.0.3的容器的80端口;
ip 为172.17.0.3的容器可以访问172.17.0.2的80端口;
ip 为172.17.0.2的容器可以访问172.17.0.3的80端口

三. docker 1.8怎么关闭docker-proxy,说明做法和截图

1. 启动一个端口映射的 nginx container

docker run -p 81:80 -ti 813e3731b203 /bin/bash

2. ps 可以看到 docker-proxy 的进程

3. 重启 docker, 使用 --userland-proxy=false 关闭 docker-proxy

docker daemon --userland-proxy=false


不再有 docker-proxy 进程

2016-01-03 01:449