张 永 一个梦想自由的程序员

——————————————— 让科技和智能使人更便捷 ———————————————
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

docker 整理

Posted on 2019-08-17 21:25  hylas  阅读(643)  评论(0编辑  收藏  举报

docker批量删除容器、镜像

 

1、删除所有容器

docker rm `docker ps -a -q`

1.1 按条件删除容器

删除包含某个字段 ,镜像名或容器名均可, 例如删除  zhy* 
docker rm -f $(docker ps -a |  grep "zhy*"  | awk '{print $1}')

 

 

2、删除所有镜像

docker rmi `docker images -q`

3、按条件删除镜像

  没有打标签

docker rmi `docker images -q | awk '/^<none>/ { print $3 }'`

  镜像名包含关键字

 

 

docker rmi --force `docker images | grep doss-api | awk '{print $3}'`    //其中doss-api为关键字

 

 

4、apt-get 加速脚本

#!/bin/bash
mv /etc/apt/sources.list /etc/apt/sources.list.bak
Codename=$( (lsb_release -a)|awk '{print $2}'|tail -n 1 )

echo "\

#deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse ">/etc/apt/sources.list


apt-get update

 

~

5、Docker 容器日志

查看所有容器日志大小和清理所有容器日志命令:

ls -lh $(find /var/lib/docker/containers/ -name *-json.log)

truncate -s 0 /var/lib/docker/containers/*/*-json.log

 

5、Docker 加速

/etc/docker/daemon.json 

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

{
  "registry-mirrors": ["https://z6uaxjis.mirror.aliyuncs.com"]
}


systemctl restart docker

 

 

5、Docker 建立网络

 

docker network create -d bridge elknet
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it \ --name elk --network=elknet sebp/elk

 

 

6、批量容器

sh start.sh 10


#! /bin/bash
COUNT=$1
if [ -z "$COUNT" ];then
    echo "please input the number of container"
    exit 1
fi
while [ "$COUNT" -gt 0 ];do
    docker run -d -ti --rm --name alpine-"$COUNT" alpine sh
    COUNT=$(($COUNT-1))
done


sh stop.sh 

docker rm -f $(docker ps -a |  grep "alpine-*"  | awk '{print $1}')

 

 

 

6、Docker 众多启动配置文件

 

入口文件

/etc/init/docker.conf == service docker start 的入口文件==
/etc/init.d/docker == start docker 的入口文件 ==
/usr/lib/systemd/system/docker == RHEL 系列中 systemctl start docker.service 的入口文件 ==
/lib/systemd/system/docker == Ubuntu 系列中 systemctl start docker.service 的入口文件 ==
配置文件

/etc/default/docker == service 和 start 的配置文件==
/etc/docker/daemon.js ==1.12版本后万能配置文件==
如果你使用的是 docker 1.11(含)之前的版本, 如果能升级的话还是升级到最新版本吧. 如果不能升级, 还找不到配置文件, 可以在对应的入口文件中直接在启动命令后面添加参数

不知道的时候对 docker 这么多的入口和配置文件感觉真的很烦, 明白了他们的对应关系之后才恍然大悟, 原来 docker 不仅仅为跨平台付出了大量的精力, 连初始化系统也全部都适配到了, 让你不管使用什么系统, 系统使用什么初始化工具都能运用自如, 这里给 docker 点👍 (虽然用不到这么多文件, 而且给我带来了很长时间的困扰)

使用 systemctl start/stop docker 唯一入口
/lib/systemd/system/docker.service
可用 systemctl status docker 查看到

 

100、采坑处理

启动遇到:

docker.service: Failed with result 'start-limit-hit'.

尝试处理办法:

这是因为除了docker.service单元文件,还有一个docker.socket单元文件...这是用于套接字激活。警告意味着,
如果您在docker服务未运行时尝试连接到docker套接字,systemd将自动为您启动docker。
您可以通过删除/lib/systemd/system/docker.socket来摆脱此问题...您可能还需要从docker.service单元文件中删除-H fd://

 

启动遇到:

 unable to configure the Docker daemon with file /etc/docker/daemon.json

尝试处理办法:

1. 检查 /etc/docker/daemon.json 格式

  2. 不允许有两行

 

 

遇到:

 Could not kill running container   permission denied   无法关闭,无法kill 

尝试处理办法:

1. 执行 sudo aa-remove-unknown

  2. docker stop  / kill  ...

 

 

坑集合:
https://blog.csdn.net/zhonglinzhang/article/details/85254035