docker是持续构建应用交付的一大利器也,但是要使工具发挥最大的功效还需要知道一些小技巧。

为了更好的使用docker,建议升级到1.13。注意,该建议仅为个人观点,并且是写于2017年9月3日。(下面命令皆基于1.13)

# 升级指令(centos7测试过)
yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
yum makecache fast
yum -y remove docker docker-common container-selinux
yum -y install docker-engine-1.13.1

清除docker占用的磁盘空间

# 清除没有依赖的镜像和停止运行的容器,没有使用的容器卷与网络(强制清除用-f)
docker system prune

# 清除没有依赖的镜像(强制清除用-f)
docker image prune

# 清除停止运行的容器(强制清除用-f)
docker container prune

# 清除没有使用的网络(强制清除用-f)
docker network prune

# 清除没有使用的容器卷(强制清除用-f)
docker volume prune

查看docker占用docker空间情况

docker system df

创建自启动容器

docker run --restart=always my_image

创建退出自删除容器

docker run --rm my_image

容器健康检查

# 启动容器时候指定(timeout执行命令超时时间,health-interval执行检查间隔时间)
docker run -d --health-cmd "curl -f http://localhost/123 || exit 1" --health-interval=5s --timeout=3s my_image

# Dockerfile指定(timeout执行命令超时时间,interval执行检查间隔时间)
HEALTHCHECK --interval=60s --timeout=10s CMD curl -f http://127.0.0.1/ || exit 1

docker swarm 集群相关命令

# 创建集群
docker swarm init --advertise-addr {本机地址}

# 获取加入集群命令(管理员节点)
docker swarm join-token manager

# 获取加入集群命令(普通节点)
docker swarm join-token worker

# 显示节点列表
docker node ls

# 显示已有服务
docker service ls

# 显示某个服务下容器
docker service ps {服务名字}

# 创建一个服务
docker service create --replicas {实例数量} --name {服务名字}  -p {主机端口}:{容器内部端口}  my_image {启动指令}

# 删除一个服务
docker service rm {服务名字}

# 修改实例数量
docker service scale {服务名字}={服务数量}

# 修改实例使用镜像
docker service update --image {镜像名字} {服务名字}

# 修改实例内存限制
docker service update --limit-memory {内存使用} {服务名字}  

# 修改实例cpu限制
docker service update --limit-cpu {内存使用} {服务名字} 

查看容器占用资源情况

docker stats

查看所有镜像

docker images

查看容器

# 查看正在运行的容器
docker ps

# 查看所有的容器
docker ps -a