Docker 空间使用分析与清理

摘要:用户在使用 Docker 部署业务一段时间后,可能会发现宿主节点的磁盘容量持续增长,甚至将磁盘空间耗尽进而引发宿主机异常,进而对业务造成影响。 本文先对 Docker 的空间分析与清理进行说明,然后对容器的磁盘容量限制与使用建议做简要说明。

典型问题场景

用户发现 Docker 宿主机的磁盘空间使用率非常高。通过 du 逐层分析,发现是 Volumeoverlay2 等目录占用了过高空间。示例如下: 

Continue reading "Docker 空间使用分析与清理"

解决非root用户使用docker的办法

通常我们使用Docker的时候都是使用的root,官方说法如下:

The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can access it with sudo. For this reason, docker daemon always runs as the root user. 
To avoid having to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

下面是使用非root用户操作的步骤:

1、创建docker组

2、将当前用户加入docker组

3、重新启动docker服务(下面是CentOS7的命令)

4、当前用户退出系统重新登陆

Continue reading "解决非root用户使用docker的办法"

使用Docker容器的十大误区

对于用户来说,可能一开始在不了解的情况下会对容器报以拒绝的态度,但是在尝到容器的甜头、体验到它的强大性能之后,相信大家最终是无法抵挡其魅力的。容器技术能够解决IT业目前面临的很多问题,而且优势也很明显,比如说:

1、容器具有不可变的特性。
容器将操作系统、程序库、配置文件、路径和应用程序打包在一起运行,也就是说,我们在做QA测试的时候整个镜像是什么样,投入到产品环境以后就是什么样,其性能不会有任何差距。
2、容器都非常轻量。
单个容器的内存占用很小,不像其他进程动辄占用上万MB的内存空间,容器只会给主进程分配内存,可以有效降低系统开销。
3、容器的速度更快。
虚拟机的启动时间一般都在分钟级,容器的启动速度可以达到秒级,启动容器就跟启动linux进程一样快。
Continue reading "使用Docker容器的十大误区"

docker build过程中DNS失效问题解决

该问题是在我使用alpine的apk安装相关软件时发现的,无论如何也无法访问第三方网站,同样在ubuntu中也是如此。

不仅仅是docker build过程中存在DNS解析问题,其实默认在docker运行时,在docker内部也无法和宿主机共享DNS解析服务。

解决方案如下:

Continue reading "docker build过程中DNS失效问题解决"

使用docker安装ElasticSearch

方案一:使用dockerhub镜像

成功后访问:http://127.0.0.1:9200,该镜像默认不需要任何账号密码验证。

方案二:使用elastic镜像

具体请参考官方网站手册:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/docker.html

开发环境可以通过以下命令执行ES:

成功后访问:http://127.0.0.1:9200,默认账号密码:elastic/changeme

Continue reading "使用docker安装ElasticSearch"

dockerfile示例

基本指令

Continue reading "dockerfile示例"

Docker 日志都在哪里?怎么收集?

日志分两类,一类是  Docker 引擎日志;另一类是  容器日志

Docker 引擎日志 

Docker 引擎日志 一般是交给了  Upstart(Ubuntu 14.04) 或者  systemd (CentOS 7, Ubuntu 16.04)。前者一般位于  /var/log/upstart/docker.log 下,后者一般通过  jounarlctl -u docker 来读取。不同系统的位置都不一样,SO上有人总结了一份列表,我修正了一下,可以参考:

系统 日志位置
Ubuntu(14.04) /var/log/upstart/docker.log
Ubuntu(16.04) journalctl -u docker.service
CentOS 7/RHEL 7/Fedora journalctl -u docker.service
CoreOS journalctl -u docker.service
OpenSuSE journalctl -u docker.service
OSX ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log
Debian GNU/Linux 7 /var/log/daemon.log
Debian GNU/Linux 8 journalctl -u docker.service
Boot2Docker /var/log/docker.log

Continue reading "Docker 日志都在哪里?怎么收集?"

Docker: 如何修改 Docker 的镜像存储位置

我用的阿里云的服务器, 但是系统盘只有20G, 默认 Docker 的镜像文件是安装在/var/lib 目录下的, 这样的话我根本装不了太多的镜像... 这个必须得改改...
搜了下, 解决方案如下:

方案1, 使用参数-g 来修改 Docker 的镜像存储文件夹.

修改方法如下:
在 Ubuntu/Debian 系统下:
编辑 /etc/default/docker 文件, 添加-g 参数的设置, 如下:

在 Fedora/Centos 系统下:

编辑 /etc/sysconfig/docker 文件, 添加-g 参数的设置, 如下:

重启 Docker 服务, 问题就解决了. Continue reading "Docker: 如何修改 Docker 的镜像存储位置"

一键安装Docker图形化管理界面-Shipyard

Shipyard是一款开源的图形化的Docker管理工具,记得以前安装很麻烦的,现在官方有了自动安装脚本,使用非常方便。复制、粘贴、使用,就这么简单。先不研究他是如何实现的,安装使用起来再说。

Continue reading "一键安装Docker图形化管理界面-Shipyard"