管理员手册
1.基础
自定义docker服务的配置文件路径
/etc/docker/daemon.json
12345678# 示例配置文件{"debug": true,"tls": true,"tlscert": "/var/docker/server.pem","tlskey": "/var/docker/serverkey.pem","hosts": "tcp://192.168.59.3:2376"}查看docker日志
1journalctl -u docker.service
打开debug模式
123456vim /etc/docker/daemon.json{"debug": true}$ sudo kill -SIGHUP $(pidof dockerd) # reload the dockerd强制堆栈跟踪, 但是并不会退出进程. 当dockerd没有响应的时候, 强制打印堆栈日志.
1$ sudo kill -SIGUSR1 $(pidof dockerd)docker上的容器开机或者dockerd重启的时候, 自动启动
1234# docker run 的时候加入 --restart 参数# no - Container不重启# on-failure - container退出状态非0时重启# always - 始终重启
2.container启动内存参数
参数 | 解释 |
---|---|
b, k, m, g | 允许使用的单位 |
-m or –memory= | 容器所能使用的最大内存数, 允许的最小值为 4m, 默认不限制 |
–memory-swap | 容器所能使用的最大交换分区大小, 默认不限制 |
–memory-swappiness | 允许将匿名内存页, 交换出内存分区的百分比. 可设置0 - 100, 默认继承系统的设置 |
–memory-reservation | 允许你设置一个内存的软限制, 如果你设置了它, 它必须要小于 –memory 设置的值 |
–kernel-memory | 容器所能使用的最大内核内存(区别于用户内存), 默认不限制 |
–oom-kill-disable | 默认情况下,如果发生OOM,内核将会杀死容器中的进程. 开启这个参数,并且指定-m, 去禁用这个行为 |
–memory-swap
默认为 -1 (不限制大小)
如果设置了–memory但是没有设置此项, 则此项默认为–memory的两倍
如果同时设置了–memory和–memory-swap,则(swap大小 = memory-swap设置 - memory设置)
–kernel-memory
无限制内存,无限制内核内存: 这是默认行为
无限制内存,限制内核内存: 当所有的容器所需使用的内存大于宿主机的内存时,这样设置是适当的. 这会让其他需要更多内存的容器等待, 直到有足够的内存释放.
有限的内存,无限制的内核内存: 使用有限的内存, 无限制的内核内存.
有限的内存,有限的内核内存: 同时限制内存和内核内存,将有利于去调试那些因为内存导致的问题.如果不限制一个容器的内存和内核内存,它将在不影响其他容器和宿主机的情况下把所有内存耗尽. 否则,如果同时都加以限制, 在内核内存限制小于内存限制的时候, 内核内存溢出的情况下会引发容器内部的OOM, 如果内核内存限制大于内存限制的话, 内核限制将不会导致容器内的OOM.
3.container启动CPU参数
默认情况下, 容器不限制CPU的使用情况. 你可以通过以下开关来限制容器使用的CPU资源.
大多数用户会通过默认的 CFS调度器 去配置容器的CPU使用资源
参数 | 解释 |
---|---|
–cpus= |
指定可以使用多少CPU资源, 允许使用–cpus=”1.5”这种单位.详细会在下面讲到 |
–cpu-period= |
指定调整CPU CFS调度器的重新分配周期, 默认是1秒, 期望单位为微秒, 一般不会修改此项 |
–cpu-quota= |
指定容器在CFS调度器中的权重, –cpus = cpu-quota / cpu-period |
–cpuset-cpus | 指定使用哪些CPU, 0-3代表使用前4个CPU, 1,3代表使用第二和第四个CPU |
–cpu-shares | 设置一个大于或者小于1024的值, 以增加或减少容器的权重, 当CPU资源不足时,进行权衡. |
同时, Docker提供一些选型让你能改变程序的优先级. CPU调度以及优先级都是内核级别的特性, 大多数用户不需要去改变这些默认的值, 不正确的去改变这些, 将会导致你的系统不稳定,甚至崩溃.如果你了解这些, 并且想进一步设置, 可以访问 https://docs.docker.com/engine/admin/resource_constraints/#configure-the-realtime-scheduler
4.让容器一直运行
默认情况下, 当Docker守护进程关闭了, 他会关闭所有运行的容器. 当你的Docker版本大于1.12之后, 你可以进行配置让守护进程不可用的时候, 容器依然正常运行. 这个选项将减少由于守护进程崩溃,有计划的维护或升级Docker带来的影响时间.
这个选项暂时不支持Windows上的Docker, 但是支持Linux上的Windows容器.
|
|
或者启动Docker的时候加入这个参数
- 此在线修复的功能, 可以允许你平滑地升级你的Docker. 但是当你跨大版本升级的时候. 例如1.21.1到1.13.2版本, 守护进程可能不能修复与容器之间的链接, Docker将不能接管这些旧版本的容器. 但是也不会关闭他们. 这意味着你需要手动重启这些容器来重新接管.
- 在线修复功能只能在配置文件不变的情况下, 如果守护进程在关闭和启动之后, 使用的不同的配置项, 这个选项将可能失效.
- 一个长时间不在线的Docker守护进程, 会影响运行中容器. 因为容器在运行的时候会把日志写进一个 FIFO的日志队列中去, 让Docker守护进程去消费.如果Docker不能去消费这些输出, 日志队列将会填满,然后阻塞容器的日志写入, 直到有空间继续写入.默认日志队列的大小为64K.你可以重启Docker来清空这个队列.又或者更改这个队列的大小
/proc/sys/fs/pipe-max-size
.
5.HTTP/HTTPS proxy
你几乎可以通过daemon.json来配置所有的配置项, 除了HTTP proxy等特殊项.
比如你可以通过配置文件指定Docker存放镜像文件,容器和逻辑卷分区的目录.
但是如果你想配置一些特殊项,比如容器的HTTP proxy配置, 你必须得这么做:
Docker守护进程使用HTTP_PROXY
, HTTPS_PROXY
,和 NO_PROXY
环境变量去配置HTTP代理的行为.
1.创建目录
2.创建对应配置文件/etc/systemd/system/docker.service.d/http-proxy.conf
还有https的,如果需要的话/etc/systemd/system/docker.service.d/https-proxy.conf
3.假如你拥有一个内部私有仓库, 而你不想这些连接使用http_proxy, 可以特别指定
4.重新加载systemd配置
5.重启docker
6.检查
6.创建私有仓库
1.指定--registry-mirror
来启动你docker服务
2.启动自己的私有仓库