docker常用命令
=======重建 docker 的 storage=======
(1) 查看 lv (logic volumn)
lvdisplay
回显
/dev/docker/thinpoolmeta and thinpool
(2) 清理 docker lib
rm -rf /var/lib/docker/*
(3) 删除 lv
lvremove /dev/docker/thinpool
(4) 重建 thinpool
lvcreate --wipesignatures y -n thinpool docker -l 95%VG
(5) 格式化
lvconvert -y \
--zero n \
-c 512K \
--thinpool docker/thinpool
(6) 重启 docker
service docker restart
lvs
lvdisplay
============docker与宿主机之间文件传递=================
拷贝文件到容器
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
拷贝文件到宿主机
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
docker代理
/etc/systemd/system/docker.service.d
========docker批量删除========
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
删除所有镜像
docker rmi $(docker images -q)
强制删除镜像名称中包含“doss-api”的镜像
docker rmi --force $(docker images | grep doss-api | awk '{print $3}')
=========镜像导出导入==========
方式一
docker save -o 保存文件名.tar 目标镜像名:tag
docker tag id name:tag
docker load -i 上传文件
docker rmi -f busybox
(该种方式会保存镜像的所有历史记录)
方式二
docker export
docker export id > ubuntu.tar
docker import
docker import - test/ubuntu:v1.0
(该种方式不会保存镜像的所有历史记录,只保存一次快照状态)
=======镜像制作方式==========
1.通过用dockerfile 来制作镜像
编写dockerfile
然后docker build -t xxx:tag .
2.可以通过docker commit 来制作镜像 [前提是镜像已经存在]
通过docker exec -it xxxx:tag /bin/bash 进入容器内部
修改完毕之后
exit
docker ps -a 会多出一个ID出来
这时候可以可以用docker commit
docker commit <ID> xxxx:new
本地文件拷贝容器中
docker cp kube-controller-manager 4ce62d7cf0f4:/usr/local/bin/
docker commit 4ce62d7cf0f4 x.x.x.x:20202/root/cfe-kube-controller-manager:test
docker run -it imageID /bin/bash
============查看容器配置============
docker inspect 容器id
=========cpu============
默认情况下容器可以使用的主机 CPU 资源是不受限制的
--cpu-period=100000 --cpu-quota=200000 //(1.13 及之后的版本(新增--cpus=2 配置项)仍然支持这两个选项) //单位为微秒,100000 表示 100 毫秒,200000 表示 200 毫秒 含义:在每 100 毫秒的时间里,运行进程使用的 CPU 时间最多为 200 毫秒(需要两个 CPU 各执行 100 毫秒)
--cpuset-cpus= //指定固定的cpu //--cpuset-cpus 选项的一个缺点是必须指定 CPU 在操作系统中的编号,这对于动态调度的环境(无法预测容器会在哪些主机上运行,只能通过程序动态的检测系统中的 CPU 编号,并生成 docker run 命令)会带来一些不便。写法--cpuset-cpus=”0,1,2”或者--cpuset-cpus=”0-2”
--cpu-shares=512 //设置CPU的权重,当 CPU 资源充足时,设置 CPU 的权重是没有意义的。只有在容器争用 CPU 资源的情况下, CPU 的权重才能让不同的容器分到不同的 CPU 用量。--cpu-shares 选项用来设置 CPU 权重,它的默认值为 1024。我们可以把它设置为 2 表示很低的权重,但是设置为 0 表示使用默认值 1024
=======docker 安全检查========
docker ps --quiet | xargs docker inspect --format '{{.Id}}:UTSMode = {{.HostConfig.UTSMode}}'
docker ps --quiet | xargs docker inspect --format '{{.Id}}:Devices = {{.HostConfig.Devices}}'
docker ps --quiet | xargs docker inspect --format'{{.Id}}:CpuShares = {{.HostConfig.CpuShares}}'
for dt in `docker ps --quiet`; do echo $dt; docker exec $dt ps -o args -e 2>/dev/null| egrep '\s+ssh\s+'; done
docker exec ID ps -o args -e 2>/dev/null | egrep '\s+ssh\s+'