接触 docker 时间也不短了, 但是 docker 的配置文件一直是个”神秘”的东西, 我在CentOS/Ubuntu/Fedora 平台上都使用过 docker, 而且 docker 的版本从1.9到最新的1.13都用过, 可以说 docker 的配置文件真的是 “乱花渐欲迷人眼”, 写在哪儿的都有. 而且 docker 的启动方式不同读取的配置文件位置也不同, 有的时候改了半天配置文件发现不生效… 今天我们就来找找 docker 的配置文件!

1.12版本后的万能配置文件

1.12版本后, 用户可以自行创建 /etc/docker/daemon.js 该文件, 该文件是 docker 进程的配置管理文件, 里面几乎包含了所有 docker 命令行启动可以配置的参数, 不管是哪个平台, 不管是以何种方式启动, 默认都会来这里读取配置, 所以如果你会配置这个文件, 就不会再费力气去找 docker 的普通配置文件或是 docker 的启动入口了

这个文件在前面的文章里有介绍, 官方也给出了使用模板, 有需要的话可以翻看前面的文章查看或是到 docker 的官方文档中查看

查找配置文件

不管是 CentOS7+/Fedora24+ 还是 Ubuntu16+, 他们现在都使用 systemctl 来管理程序, 所以在以上平台上, 启动 docker 的时候都推荐使用如下命令

1> systemctl start docker.service

即使在 Ubuntu 下使用/etc/init.d/docker start的方式启动, 回显也会告诉你他还是使用了 systemd 去管理的. service 也是一样, service 找的就是/etc/init.d/docker 所以使用 service 启动其本质也还是使用了 systemctl 的方式启动的(Ubuntu16.04LTS)

docker启动成功后(当然启动失败也行) 执行如下命令查看 docker 的启动状态(日志)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23> systemctl status docker.service

● docker.service - Docker Application Container Engine

Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)

Active: active (running) since Mon 2017-02-06 12:43:32 CST; 1s ago

Docs: https://docs.docker.com

Main PID: 22100 (dockerd)

Tasks: 18

Memory: 12.5M

CPU: 434ms

CGroup: /system.slice/docker.service

├─22100 /usr/bin/dockerd -H fd://

└─22109 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc

Feb 06 12:43:31 xsl dockerd[22100]: time="2017-02-06T12:43:31.890635900+08:00" level=warning msg="Your kernel does not support cgroup rt period"

Feb 06 12:43:31 xsl dockerd[22100]: time="2017-02-06T12:43:31.891099470+08:00" level=warning msg="Your kernel does not support cgroup rt runtime"

Feb 06 12:43:31 xsl dockerd[22100]: time="2017-02-06T12:43:31.892444087+08:00" level=info msg="Loading containers: start."

Feb 06 12:43:31 xsl dockerd[22100]: time="2017-02-06T12:43:31.903230791+08:00" level=info msg="Firewalld running: false"

Feb 06 12:43:32 xsl dockerd[22100]: time="2017-02-06T12:43:32.205131505+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"

Feb 06 12:43:32 xsl dockerd[22100]: time="2017-02-06T12:43:32.346345114+08:00" level=info msg="Loading containers: done."

Feb 06 12:43:32 xsl dockerd[22100]: time="2017-02-06T12:43:32.397174805+08:00" level=info msg="Daemon has completed initialization"

Feb 06 12:43:32 xsl dockerd[22100]: time="2017-02-06T12:43:32.397651049+08:00" level=info msg="Docker daemon" commit=49bf474 graphdriver=aufs version=1.13.0

Feb 06 12:43:32 xsl dockerd[22100]: time="2017-02-06T12:43:32.419960532+08:00" level=info msg="API listen on /var/run/docker.sock"

Feb 06 12:43:32 xsl systemd[1]: Started Docker Application Container Engine.

在回显的第二行就可以看到Loaded字样, 这行就提示了 docker 启动的入口文件, 如果有需要添加的启动配置, 来这里找就对了!

以上查出来的 docker 文件是 docker 的入口文件, 你可以在入口文件的 docker 启动方式中, 添加一些参数, 也可以像上面写的, 把配置写进”万能配置文件中(js 文件)”

其他配置文件

让人眼花缭乱的配置文件

/etc/default/docker

这个文件在开头的注释中就写到了

1

2

3

4

5

6

7

8# Docker Upstart and SysVinit configuration file

#

# THIS FILE DOES NOT APPLY TO SYSTEMD

#

# Please see the documentation for "systemd drop-ins":

# https://docs.docker.com/engine/articles/systemd/

#

这个配置文件只有在 Linux 使用Sysvinit和Upstart作为初始化 init 系统的时候才会生效, 才会读取这个配置文件, 紧接着下面一行又说了 systemd系统并不适用

而在 Ubuntu16.04 LTS中, 系统默认使用的是 systemd 来管理的, 即使你使用 service, 最后还是重定向到了 systemctl. 所以上面这个配置文件在默认使用 systemd 的 CentOS7+/Fedora24+/Ubuntu16+ 系统中都是没有任何卵用的配置文件!!!

如果你想深入了解三大 init 系统的历史以及发展现状, 可以点开以下参考文档中的链接查看

下面我简单区分一下这三大初始化系统

Sysvinit: CentOS6时代, 我们最熟悉的 service docker restart 命令就出自这个系统管理; 在 Ubuntu 中的 /etc/init.d/docker restart 也是这个系统来管理的

Upstart: 这个初始化系统比较少见, 在 Ubuntu 上比较多见, 启动软件的方式为 restart docker 在 docker 的官方网站中, 介绍基于 Ubuntu14和15版本 docker 启动方式时, 就是使用的这个初始化系统https://docs.docker.com/engine/admin/

Systemd: systemd 是目前大多数 Linux 发行版默认的初始化管理系统, CentOS7+ 和 Ubuntu16+ 都是使用 Systemd 进行管理, 软件启动方式为 systemctl restart docker.service

/etc/init.d/docker

这个文件只有在系统使用 sysvinit 来管理时才会用到, 因为我的系统默认都使用了 systemd 进行管理, 所以这个文件对我来说也没有任何卵用, 即使我用了 sysvinit 管理程序的语法, 也会被重定向到 systemd 去管理程序. 这个 docker 入口读取的是 /etc/default/docker 这个配置文件

/etc/init/docker.conf

这个文件只有在系统使用 Upstart 来管理时才会用到, 无用的道理同上. 这个 docker 入口读取的也是 /etc/default/docker 这个配置文件

总结

入口文件

/etc/init/docker.conf == service docker start 的入口文件==

/etc/init.d/docker == start docker 的入口文件 ==

/usr/lib/systemd/system/docker == RHEL 系列中 systemctl start docker.service 的入口文件 ==

/lib/systemd/system/docker == Ubuntu 系列中 systemctl start docker.service 的入口文件 ==

配置文件

/etc/default/docker == service 和 start 的配置文件==

/etc/docker/daemon.js ==1.12版本后万能配置文件==

如果你使用的是 docker 1.11(含)之前的版本, 如果能升级的话还是升级到最新版本吧. 如果不能升级, 还找不到配置文件, 可以在对应的入口文件中直接在启动命令后面添加参数

不知道的时候对 docker 这么多的入口和配置文件感觉真的很烦, 明白了他们的对应关系之后才恍然大悟, 原来 docker 不仅仅为跨平台付出了大量的精力, 连初始化系统也全部都适配到了, 让你不管使用什么系统, 系统使用什么初始化工具都能运用自如, 这里给 docker 点

docker运行yyets_docker的启动文件和配置文件相关推荐

  1. docker运行yyets_docker: 存放各种docker image构建脚本或者快速启动的docker-compose文件。一处构建,处处可用,方便健忘人士和减轻国内开发人员的负担。...

    说明 存放各种docker image构建脚本或者快速启动的docker-compose文件. 实现:一处构建,处处可用,方便健忘人士和减轻国内开发人员的负担. 最后,我会在有空的时候尽量完善各个镜像 ...

  2. docker运行yyets_docker常规操作——启动、停止、重启容器实例

    一.启动一个已经停止的容器实例 docker start 容器ID或容器名,建议使用容器ID,容器ID支持模糊查询而容器名称不支持 1. 先查看已经暂停的容器实例信息 2. 通过docker star ...

  3. docker运行yyets_Docker 镜像配置,看这一篇足矣。

    这是无量测试之道的第171篇原创 镜像:是一个只读的Docker 容器模板,包含启动容器所需要的所有文件系统结构和内容. 简单来讲,镜像是一个特殊的文件系统,它提供了与容器运行时所需的程序,软件库.资 ...

  4. docker运行yyets_docker 安装 运行 卸载

    一.卸载docker 安装时使用什么工具安装的docker就用什么工具卸载docker: 1.yum卸载docker 查看已安装的docker yum list installed | grep do ...

  5. docker运行yyets_docker常用命令

    镜像导出 docker save -o web.tar web 镜像导入 docker load -i web.tar 查看所有镜像 docker images 删除镜像 docker image r ...

  6. docker运行yyets_docker实战

    Docker 安装 MySQL MySQL 是世界上最受欢迎的开源数据库.凭借其可靠性.易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择. 1.查看可用的 MySQL 版本 2.拉取 ...

  7. docker运行yyets_Docker配置

    Docker 版本 – 社区版 – 企业版 • 与 Kubernetes 集成(在Linux版本号很重要呢!) – 社区版 17.03.2 ce • CentOS(虚拟机)安装 docker – 官方 ...

  8. docker运行yyets_docker 使用教程1

    本系列会做一个完整的Docker使用教程 上一篇:docker的安装.卸载.运行:https://www.cnblogs.com/easyidea/p/14210376.html 1.概念理解 镜像: ...

  9. docker运行yyets_docker常用命令汇总

    docker常用命令汇总,容器,镜像,内核,版本,端口 docker常用命令汇总 易采站长站,站长之家为您整理了docker常用命令汇总的相关内容. docker安装 1.要求:linux内核在3.1 ...

最新文章

  1. 从原理到实现,详解基于朴素ML思想的协同过滤推荐算法
  2. 关于jConfirm回传的解决方案
  3. android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
  4. python3.2安装tornado
  5. 网页开发浏览器兼容性问题
  6. 太极计算机ehr系统,(数据科学学习手札21)sklearn.datasets常用功能详解
  7. 使用auditctl追踪文件变化
  8. [深入学习C#]输入输出安全性——可变类型形參列表的变化安全性
  9. lammps教程:薄膜渗透过滤模拟--平衡弛豫过程
  10. C28x DSP程序加载与运行
  11. HTML常用标签(三)
  12. Visual C++ 2010如何解决程序运行闪退问题
  13. Python-小实战-1.0
  14. 笛卡尔积实现-JavaScript版
  15. 如何设置快递送达时短信提醒
  16. 鬼故事之中学异事(01)
  17. BIOS工程师需要掌握的知识
  18. 【JS】递归获取树的所有叶子节点
  19. 2021年机修钳工(技师)考试题库及机修钳工(技师)模拟考试
  20. Java OCR 图像智能字符识别技术[可识别中文]

热门文章

  1. LinearLayout列表展示
  2. laravel route
  3. STM32F407霸天虎HAL库CubeMX学习笔记——DS18B20
  4. 计蒜客模拟赛7礼品盒
  5. Android(selinux权限)(capabillty权限)(节点权限)等权限处理
  6. 蓝色巨人Vs开放源代码 一场没有胜者的角逐
  7. 第十七届全国大学生智能汽车竞赛:智慧交通组创意赛线上资格赛-冠军方案
  8. [Activity] springMVC集成Activiti WebEditor 在线流程设计器
  9. SpringBoot 整合security 实现自定义Token和clientId登录及退出(二)
  10. mysql decimal类型详解