docker daemon configuration
于 Docker的分层镜像,除了 aufs,docker还支持btrfs, devicemapper和vfs,你可以使用 -s 或 –storage-driver= 选项来指定相关的镜像存储。在Ubuntu 14.04下,Docker 默认 Ubuntu的 AUFS。因为 AUFS 还没有进入Linux 内核主干的原因,RedHat 上使用的是 devicemapper。
不同框架的配置文件
由于 Linux 不同发行版所采用的默认管理框架的不同,Docker 在不同环境下所使用的默认配置文件也有所不同。这给初学者带来了极大的困惑和不便。好消息是,Docker 官方也意识到了这个问题,所以从 V1.12 开始,引入了并行通用配置文件 ```/etc/docker/daemon.json``` 。从此以后,用户可以在所有平台统一通过调整该配置文件来调整 Docker Engine。
不同 Linux 发行版本默认使用的管理框架可能存在不同。而不同管理框架下配置文件的架构差异,最终导致了不同环境下默认 Docker 配置文件目录和文件名的不同。Linux 常见管理框架下的默认配置文件说明如下:
| 管理框架类型 | 默认使用该框架的操作系统 | Docker 默认配置文件 | 相关操作指令 |
| - | - | - | - |
| Sysvinit | CentOS 6.x, Ubuntu 12.04 等| /etc/default/docker | CentOS: service docker restart
Ubuntu: /etc/init.d/docker restart |
| Upstart | Ubuntu 14.x,15.x 等| /etc/default/docker| restart docker |
| Systemd | CentOS 7+,Ubunt 16+,Debian,RHEl 7, Fedora, Archlinux 等| Ubuntu/CentOS/: /lib/systemd/system/docker.service
RHEL/CentOS: /usr/lib/systemd/system/docker.service | systemctl restart docker.service |
之前在使用docker的时候,由于启动container的时候用的是默认的mount(路径为 /var/lib/docker),这个目录对应的硬盘空间有限,只有200G左右。现在随着程序运行,有大量的数据生成。硬盘空间就悲剧了。。。。
现在的想法是,宿主机上还有一块大硬盘空间,需要docker把数据放到大硬盘上。
解决方案
方法一 修改 docker daemon 的启动参数 -g, --graph=""
Path to use as the root of the Docker runtime. Default is /var/lib/docker.
如 docker -d --graph=/opt/docker
注: 这种方式只会临时修改,如果重启 docker daemon,就又会回到默认值。。。
我们可以通过修改 docker daemon的配置文件的方式来保存我们修改,方法如下:
默认情况下,docker daemon 会有一个默认的configuration 文件,此外,我们可以新建一个名为“daemon.json”文件的文件,我们在这个文件中的定义,会覆盖默认配置文件的内容文件。
#cd etc/docker
#vim daemon.json
在这个文件里面加入我们的内容,即修改docker daemon 的 Rootpath
{
"graph": "/data/docker"
}
重新 load 配置
# systemctl daemon-reload
重新启动 docker daemon
# systemctl restart docker.service
方法二 挂载新目录到docker根目录
mount -o bind /var/lib/docker /opt/docker
永久修改在需要在 /etc/fatab 添加:
/opt/docker /var/lib/docker none bind 0 0
systemctl stop docker
$ rm -rf /var/lib/docker
After this we will create a basic LVM setup which will use the whole storage volume.
$ pvcreate /dev/vdb
$ vgcreate docker_vol /dev/vdb
Setup Docker storage
$ vi /etc/sysconfig/docker-storage-setup
VG="docker_vol"
Now you can run:
$ docker-storage-setup
Verify
To verify these changes, we will start Docker and run a basic image.
$ systemctl start docker
$ docker info
docker pull myregistry:xx
Error response from daemon: Get https://xxx:5000/v1/_ping: http: server gave HTTP response to HTTPS client
解决方法:
修改该或者新建/etc/docker/daemon.json
添加下面这条语句:
{ "insecure-registries":["myregistry.example.com:5000"] }
然后重启docker服务:
sudo service docker restart