1.1 容器简介

1.1.1 什么是 Linux 容器

1.1.2 容器不就是虚拟化吗

是,但也不竟然。我们用一种简单方式来思考一下:

1.1.3 容器发展简史

1.2 什么是 Docker

1.2.1 Docker 如何工作?

1.2.2 Docker 技术是否与传统的 Linux 容器相同?

1.2.3 docker的目标

1.3 安装Docker

环境说明

修改在docker01配置:

   docker02测试

1.3.1 Docker基础命令操作

配置docker镜像加速

1.3.2 启动第一个容器

参数说明

<td style="width: 59.38%; border-top: 1pt solid #9bbb59; border-right: 1pt solid #9bbb59; border-bottom: 1pt solid #9bbb59; border-left: none; background: #9bbb59; padding: 0cm 5.4pt;" width="59%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">说明</span></strong>
  </p>
</td>
<td style="width: 59.38%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" width="59%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">创建并运行一个容器</span>
  </p>
</td>
<td style="width: 59.38%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="59%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">放入后台</span>
  </p>
</td>
<td style="width: 59.38%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" width="59%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">端口映射</span>
  </p>
</td>
<td style="width: 59.38%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="59%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">镜像名称</span>
  </p>
</td>

1.3.3 Docker镜像生命周期

1.4 docker镜像相关操作

1.4.1 搜索官方仓库镜像

列表说明

<td style="width: 60.74%; border-top: 1pt solid #9bbb59; border-right: 1pt solid #9bbb59; border-bottom: 1pt solid #9bbb59; border-left: none; background: #9bbb59; padding: 0cm 5.4pt;" valign="top" width="60%">
  <p style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">说明</span></strong>
  </p>
</td>
<td style="width: 60.74%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="60%">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">镜像名称</span>
  </p>
</td>
<td style="width: 60.74%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="60%">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">镜像说明</span>
  </p>
</td>
<td style="width: 60.74%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="60%">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">点赞数量</span>
  </p>
</td>
<td style="width: 60.74%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="60%">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">是否是官方的</span>
  </p>
</td>
<td style="width: 60.74%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="60%">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">是否是自动构建的</span>
  </p>
</td>

1.4.2 获取镜像

根据镜像名称拉取镜像

查看当前主机镜像列表

拉第三方镜像方法

1.4.3 导出镜像

1.4.4 删除镜像

1.4.5 导入镜像

1.4.6 查看镜像的详细信息

1.5 容器的日常管理

1.5.1 容器的起/

最简单的运行一个容器

创建容器,两步走(不常用)

快速启动容器方法

   <span style=“font-family: ‘微软雅黑’,sans-serif; courier new"4courier new”; color: red;">容器内的第一个进程必须一直处于运行的状态,否则这个容器,就会处于退出状态!

查看正在运行的容器

查看你容器详细信息/ip

查看你所有容器(包括未运行的)

停止容器

1.5.2 进入容器方法

启动时进去方法

退出/离开容器

启动后进入容器的方法

启动一个docker

attach进入容器,使用pts/0 ,会让所用通过此方法进如放入用户看到同样的操作。

自命名启动一个容器 –name

exrc ****<span style=“font-family: ‘微软雅黑’,sans-serif; courier new"4courier new”; background: yellow;">进入容器方法(推荐使用)

1.5.3 删除所有容器

1.5.4 启动时进行端口映射

不同指定映射方法

<td style="width: 289.15pt; border-top: 1pt solid #9bbb59; border-right: 1pt solid #9bbb59; border-bottom: 1pt solid #9bbb59; border-left: none; background: #9bbb59; padding: 0cm 5.4pt;" width="386">
  <p style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">说明</span></strong>
  </p>
</td>
<td style="width: 289.15pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" width="386">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">端口映射</span>&nbsp; -p 8080:80
  </p>
</td>
<td style="width: 289.15pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="386">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">配置监听地址</span> -p 10.0.0.100:8080:80
  </p>
</td>
<td style="width: 289.15pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" width="386">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">随机分配端口</span> -p 10.0.0.100::80
  </p>
</td>
<td style="width: 289.15pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="386">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">指定协议</span> -p 8080:80:tcp
  </p>
</td>
<td style="width: 289.15pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" width="386">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">指定多个</span>
  </p>
</td>

随机映射

1.6 Docker 数据卷的管理

1.6.1 挂载时创建卷

挂载卷

容器内站点目录: /usr/share/nginx/html

在宿主机写入数据,查看

设置共享卷,使用同一个卷启动一个新的容器

查看卷列表

1.6.2 创建卷后挂载

创建一个卷

指定卷名

查看卷路径

使用卷创建

设置卷

查看使用的端口

<span style=“courier new"4courier new”;background: yellow;">1.6.3 <span style=“font-family: ‘微软雅黑’,sans-serif; courier new"4courier new”; background: yellow;">手动将容器保存为镜像

   官方镜像列表:https://hub.docker.com/explore/

启动一个centos6.8的镜像

   启动完成后镜像ssh连接测试

将容器提交为镜像

使用新的镜像启动容器

在容器安装httpd服务

编写启动脚本脚本

再次提交为新的镜像

启动镜像,做好端口映射。并在浏览器中测试访问

1.7 Dockerfile自动构建docker镜像

1.7.1 Dockerfile指令集

dockerfile主要组成部分:

     基础镜像信息 FROM centos:6.8

     制作镜像操作指令RUN yum insatll openssh-server -y

     容器启动时执行指令 CMD ["/bin/bash"]

dockerfile常用指令:

     FROM 这个镜像的妈妈是谁?(指定基础镜像)

     MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)

     RUN 你想让它干啥(在命令前面加上RUN即可)

     ADD 给它点创业资金(COPY文件,会自动解压)

     WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)

     VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)

     EXPOSE 它要打开的门是啥(指定对外的端口)

     CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)

dockerfile其他指令: 

    COPY 复制文件

    ENV  环境变量

    ENTRYPOINT  容器启动后执行的命令

1.7.2 创建一个Dockerfile

创建第一个Dockerfile文件

构建docker镜像

使用自构建的镜像启动

1.7.3 使用Dcokerfile安装kodexplorer

   更多的Dockerfile可以参考官方方法。

1.8 Docker中的镜像分层

   从上图可以看到,新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层。

1.8.1 Docker 镜像为什么分层

1.8.2 可写的容器层

1.8.3 容器层的细节说明

文件操作的

<td style="width: 79.7%; border-top: 1pt solid #9bbb59; border-right: 1pt solid #9bbb59; border-bottom: 1pt solid #9bbb59; border-left: none; background: #9bbb59; padding: 0cm 5.4pt;" width="79%">
  <p style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">说明</span></strong>
  </p>
</td>
<td style="width: 79.7%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt; height: 34.65pt;" width="79%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">在容器中创建文件时,新文件被<span style="color: red;">添加到容器层</span>中。</span>
  </p>
</td>
<td style="width: 79.7%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; height: 50.05pt;" width="79%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">在容器中读取某个文件时,</span>Docker <span style="font-family: '微软雅黑',sans-serif;">会<span style="color: red;">从上往下依次在各镜像层中查找</span>此文件。<span style="color: red;">一旦找到,立即将其复制到容器层,然后打开并读入内存</span>。</span>
  </p>
</td>
<td style="width: 79.7%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt; height: 49.2pt;" width="79%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">在容器中修改已存在的文件时,</span>Docker <span style="font-family: '微软雅黑',sans-serif;">会从<span style="color: red;">上往下依次在各镜像层中查找</span>此文件。一旦找到,立即将其复制到容器层,然后修改之。</span>
  </p>
</td>
<td style="width: 79.7%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="79%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">在容器中删除文件时,</span>Docker <span style="font-family: '微软雅黑',sans-serif;">也是<span style="color: red;">从上往下依次在镜像层中查找</span>此文件。找到后,会在容器层中<strong><span style="color: red; background: yellow;">记录下此删除操作</span></strong>。(只是记录删除操作)</span>
  </p>
</td>

1.9 使用docker运行zabbix-server

1.9.1 容器间的互联

命令执行过程

1.9.2 启动zabbix容器

1、启动一个mysql的容器

2、启动java-gateway容器监控java服务

3、启动zabbix-mysql容器使用link连接mysqljava-gateway

4、启动zabbix web显示,使用link连接zabbix-mysqlmysql

1.9.3 关于zabbix API

1、获取token方法

1.10 docker 仓库(registry

1.10.1 创建一个普通仓库

1、创建仓库

2、修改配置文件,使之支持http

重启docker让修改生效

3、修改镜像标签

4、将新打标签的镜像上传镜像到仓库

1.10.2 basic认证的仓库

1、安装加密工具

2、设置认证密码

3、启动容器,在启动时传入认证参数

4、使用验证用户测试

   至此,一个简单的docker镜像仓库搭建完成

1.11 docker-compose编排工具

1.11.1 安装docker-compose

安装docker-compose

国内开启pip 下载加速:http://mirrors.aliyun.com/help/pypi

1.11.2 编排启动镜像

1、创建文件目录

2、编写编排文件

3、启动

4、浏览器上访问http://10.0.0.100:8000

   进行wordpress的安装即可

1.11.3 haproxy代理后端docker容器

1、修改编排脚本

2、同时启动两台wordpress

3、安装haproxy

4、修改haproxy配置文件

   关于配置文件的详细说明,参考:https://www.cnblogs.com/MacoLee/p/5853413.html

5、启动haproxy

6、使用浏览器访问hapeoxy监听的8000端口可以看到负载的情况

7、使用浏览器访问 http://10.0.0.100:8888/haproxy-status

   可以看到后端节点的监控状况,

1.11.4 安装socat 直接操作socket控制haproxy

1、安装软件

2、查看帮助

3、下线后端节点

4、上线后端节点

5、编写php测试页,放到/data/web_data下,在浏览器中访问可以查看当前的节点

    <?php  <span style="color: #0000ff;">echo&lt;/span> '

<span style=“courier new"4courier new”;background: yellow;">1.12 <span style=“font-family: ‘微软雅黑’,sans-serif; courier new"4courier new”; background: yellow;">重启docker<span style=“font-family: ‘微软雅黑’,sans-serif; courier new"4courier new”; background: yellow;">服务,容器全部退出的解决办法

1.12.1 在启动是指定自动重启

1.12.2 修改docker默认配置文件

docker server配置文件/etc/docker/daemon.json参考

重启生效,只对在此之后启动的容器生效

1.13 Docker网络类型

1.13.1 docker的网络类型

<td style="width: 83.78%; border-top: 1pt solid #9bbb59; border-right: 1pt solid #9bbb59; border-bottom: 1pt solid #9bbb59; border-left: none; background: #9bbb59; padding: 0cm 5.4pt;" width="83%">
  <p style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">说明</span></strong>
  </p>
</td>
<td style="width: 83.78%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" width="83%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">不为容器配置任何网络功能,没有网络</span> --net=none
  </p>
</td>
<td style="width: 83.78%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="83%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">与另一个运行中的容器共享</span>Network Namespace<span style="font-family: '微软雅黑',sans-serif;">,</span>--net=container:containerID
  </p>
</td>
<td style="width: 83.78%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" width="83%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">与主机共享</span>Network Namespace<span style="font-family: '微软雅黑',sans-serif;">,</span>--net=host
  </p>
</td>
<td style="width: 83.78%; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="83%">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    Docker<span style="font-family: '微软雅黑',sans-serif;">设计的</span>NAT<span style="font-family: '微软雅黑',sans-serif;">网络模型<strong><span style="color: #92d050;">(默认类型)</span></strong></span>
  </p>
</td>

1.13.2 不为容器配置网络功能

1.13.3 与其他容器共享网络配置(Container

1.13.4 使用宿主机网络

1.13.5 查看网络列表

1.13.6 PIPEWORKdocker容器配置独立IP

宿主环境:centos7.2

1**、安装pipework**

2**、配置桥接网卡**

安装桥接工具

修改网卡配置,实现桥接

3**、运行一个容器镜像测试:**

在其他主机上测试端口及连通性

4**、再运行一个容器,设置网路类型为none******

   进行访问测试

5**、重启容器后需要再次指定:**

1.13.7 Docker跨主机通信之macvlan

创建网络

设置网卡为混杂模式

创建使用macvlan网络容器

1.14 docker企业级镜像仓库harbor

容器管理

1、安装dockerdocker-compose

下载 harbor

2、修改主机及web界面密码

3、执行安装脚本

浏览器访问 http://10.0.0.11

添加一个项目

4、镜像推送到仓库的指定项目

5、推送镜像

6、在web界面里查看

1.14.1 使用容器的建议

1.14.2 关于Docker容器的监控

容器的基本信息

容器的运行状态

容器的用量信息

1.15 参考文献

 1 https://www.redhat.com/zh/topics/containers/whats-a-linux-container

 2 https://www.redhat.com/zh/topics/containers/what-is-docker

[3] http://blog.51cto.com/dihaifeng/1713512

 [4] https://www.cnblogs.com/Bourbon-tian/p/6867796.html

 [5] https://www.cnblogs.com/CloudMan6/p/6806193.html

  <li>
    <a href="#12_Docker">1.2 什么是 Docker?</a><ul>
      <li>
        <a href="#121_Docker">1.2.1 Docker 如何工作?</a>
      </li>
      <li>
        <a href="#122_Docker_Linux">1.2.2 Docker 技术是否与传统的 Linux 容器相同?</a>
      </li>
      <li>
        <a href="#123_docker">1.2.3 docker的目标</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#13_Docker">1.3 安装Docker</a><ul>
      <li>
        <a href="#131_Docker">1.3.1 Docker基础命令操作</a>
      </li>
      <li>
        <a href="#132">1.3.2 启动第一个容器</a>
      </li>
      <li>
        <a href="#133_Docker">1.3.3 Docker镜像生命周期</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#14_docker">1.4 docker镜像相关操作</a><ul>
      <li>
        <a href="#141">1.4.1 搜索官方仓库镜像</a>
      </li>
      <li>
        <a href="#142">1.4.2 获取镜像</a>
      </li>
      <li>
        <a href="#143">1.4.3 导出镜像</a>
      </li>
      <li>
        <a href="#144">1.4.4 删除镜像</a>
      </li>
      <li>
        <a href="#145">1.4.5 导入镜像</a>
      </li>
      <li>
        <a href="#146">1.4.6 查看镜像的详细信息</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#15">1.5 容器的日常管理</a><ul>
      <li>
        <a href="#151">1.5.1 容器的起/停</a>
      </li>
      <li>
        <a href="#152">1.5.2 进入容器方法</a>
      </li>
      <li>
        <a href="#153">1.5.3 删除所有容器</a>
      </li>
      <li>
        <a href="#154">1.5.4 启动时进行端口映射</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#16_Docker">1.6 Docker 数据卷的管理</a><ul>
      <li>
        <a href="#161">1.6.1 挂载时创建卷</a>
      </li>
      <li>
        <a href="#162">1.6.2 创建卷后挂载</a>
      </li>
      <li>
        <a href="#163">1.6.3 手动将容器保存为镜像</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#17_Dockerfiledocker">1.7 Dockerfile自动构建docker镜像</a><ul>
      <li>
        <a href="#171_Dockerfile">1.7.1 Dockerfile指令集</a>
      </li>
      <li>
        <a href="#172_Dockerfile">1.7.2 创建一个Dockerfile</a>
      </li>
      <li>
        <a href="#173_Dcokerfilekodexplorer">1.7.3 使用Dcokerfile安装kodexplorer</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#18_Docker">1.8 Docker中的镜像分层</a><ul>
      <li>
        <a href="#181_Docker">1.8.1 Docker 镜像为什么分层</a>
      </li>
      <li>
        <a href="#182">1.8.2 可写的容器层</a>
      </li>
      <li>
        <a href="#183">1.8.3 容器层的细节说明</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#19_dockerzabbix-server">1.9 使用docker运行zabbix-server</a><ul>
      <li>
        <a href="#191">1.9.1 容器间的互联</a>
      </li>
      <li>
        <a href="#192_zabbix">1.9.2 启动zabbix容器</a>
      </li>
      <li>
        <a href="#193_zabbix_API">1.9.3 关于zabbix API</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#110_docker_registry">1.10 docker 仓库(registry)</a><ul>
      <li>
        <a href="#1101">1.10.1 创建一个普通仓库</a>
      </li>
      <li>
        <a href="#1102_basic">1.10.2 带basic认证的仓库</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#111_docker-compose">1.11 docker-compose编排工具</a><ul>
      <li>
        <a href="#1111_docker-compose">1.11.1 安装docker-compose</a>
      </li>
      <li>
        <a href="#1112">1.11.2 编排启动镜像</a>
      </li>
      <li>
        <a href="#1113_haproxydocker">1.11.3 haproxy代理后端docker容器</a>
      </li>
      <li>
        <a href="#1114_socat_sockethaproxy">1.11.4 安装socat 直接操作socket控制haproxy</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#112_docker">1.12 重启docker服务,容器全部退出的解决办法</a><ul>
      <li>
        <a href="#1121">1.12.1 在启动是指定自动重启</a>
      </li>
      <li>
        <a href="#1122_docker">1.12.2 修改docker默认配置文件</a>
      </li>
    </ul>
  </li>
  
  <li>
    <a href="#113_Docker">1.13 Docker网络类型</a><ul>
      <li>
        <a href="#1131_docker">1.13.1 docker的网络类型</a>
      </li>
      <li>
        <a href="#1132">1.13.2 不为容器配置网络功能</a>
      </li>
      <li>
        <a href="#1133_Container">1.13.3 与其他容器共享网络配置(Container)</a>
      </li>
      <li>
        <a href="#1134">1.13.4 使用宿主机网络</a>
      </li>
      <li>
        <a href="#1135">1.13.5 查看网络列表</a>
      </li>
      <li>
        <a href="#1136_PIPEWORKdockerIP">1.13.6 用PIPEWORK为docker容器配置独立IP</a>
      </li>
    </ul>
  </li>
</ul></li>

<li>
  <a href="#It_works">It works!</a>
</li>
<li>
  <a href="#It_works-2">It works!</a><ul>
    <li>
      <ul>
        <li>
          <a href="#1137_Dockermacvlan">1.13.7 Docker跨主机通信之macvlan</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#114_dockerharbor">1.14 docker企业级镜像仓库harbor</a><ul>
        <li>
          <a href="#1141">1.14.1 使用容器的建议</a>
        </li>
        <li>
          <a href="#1142_Docker">1.14.2 关于Docker容器的监控</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#115">1.15 参考文献</a>
    </li>
  </ul>
</li>