1 docker文件迁移

项目部署时docker默认安装到了”/”根目录下,根目录下分配的空间有限,随着镜像构建的增多,根目录空间会严重不足。为了释放根目录空间,同时又不影响docker的正常工作,可以通过如下方法解决:

#centos系统为例说明,假设空间大的目录为/data

systemctl stop docker

mv /var/lib/docker /data

ln –s /data/docker /var/lib/docker

systemctl start docker

执行完上述操作后,根目录下的空间能够释放,docker服务也已正常启动。

2 docker服务开机自启动

有的童鞋也许认为开机自启动很简单,只需要开机时执行特定的脚本就行,但我要推荐的并不是这种方式。我推荐的方式是即使只有一台宿主机,也安装docker swarm来发布docker服务,以docker swarm发布的docker服务不仅能够开机自启动还能够在服务被kill之后自动重启。感兴趣的童鞋不妨一试!

3 Dockfile镜像构建tips:竟可能减少镜像构建的层数,如果一个镜像需要不止一次改动后再次构建,把需要变动的操作放到Dockerfile的最后,这样可以有效利用docker的缓冲,减少镜像再次构建的时间。

4 巧用docker container prune

我们在停止docker服务后,一般都不会习惯性地删除容器,需要删除时可能会用docker ps –a | grep Exited 找到对应的容器id,然后用docker rmi containerid删除掉容器。更便捷的方式是,我们可以用docker container prune来一次性删除所有的已停止的容器。

5 less输出美化

如下图所示,我们在运行一些docker ps命令后,输出的信息会出现跨行展示,过多的换行会使我们眼花缭乱。




docker 安装prometheus后打不开 docker安装后无法开机_开机自启动


我们可以用docker ps | less –S来使docker ps以行为单位输出,命令执行后效果如下:


docker 安装prometheus后打不开 docker安装后无法开机_docker开机启动失败_02


这时我们可以左右移动以行为单位来查看每一个容器的信息。

6 慎用commit

创建镜像的时候不要用“docker commit”命令来创建。用这种办法建镜像是完全不可取的,因为这种办法是不能重复的。我们在建镜像的时候应该从Dockerfile创建,或者用其他S2I(从源文件构建镜像)的方式来创建,这样镜像才具有可再生性,而且如果我们把镜像存在git之类提供版本控制能的系统里的话,还可以对Dockerfile的改动进行跟踪。

5 不用在一个容器中运行多个应用

如果将多个服务运行到一个容器中,将给服务的运维带来极大的不便。或许多个应用的日志输出就会令你很头疼!