docker不常用命令
Docker不常用命令
Docker官方命令行文档
强制清理批量镜像
#!/bin/bash
# author: cmz
# 这段代码强制删除非goharbor|ku的镜像
# 如有疑惑,,查看保留的镜像: docker images | grep 'goharbor\|ku', 加-v参数查看删除的镜像
docker rmi -f $(docker images | grep -v 'goharbor\|ku' | awk '{print $3}')
批量修改镜像tag并上传
export IMAGE_LIST=(
aaa.com:5000/demo01:3.2.0
aaa.com.com:5000/demo02:3.2.0
)
for (( i = 0; i < ${#IMAGE_LIST[@]}; i++ )); do
export IMAGE_URL=${IMAGE_LIST[i]}
export IMAGE_URL_NEW=${IMAGE_URL/aaa.com:5000/bbb.com:8443\/library}
echo -e $IMAGE_URL
echo -e $IMAGE_URL_NEW
docker pull $IMAGE_URL
docker tag $IMAGE_URL $IMAGE_URL_NEW
docker push $IMAGE_URL_NEW
done
显示正常退出的容器
docker ps -a --filter 'exited=0'
删除已退出的容器
docker rm $(docker ps --filter status=exited -q)
删除没有tag的镜像,如 none:none形式的镜像
docker rmi $(docker images -f "dangling=true" -q)
使用Dockerfile编译镜像
# 注意最后有个 .
docker build -t ${tag} .
使用docker buildx 打包多架构镜像
docker buildx build --platform linux/arm64 -t ${image-tag} -o type=local,dest=.docker -f ./Dockerfile .
查看日志
实时查看
docker logs -f ${containerId}
最后1000行
docker logs --tail 1000 ${containerId}
保存日志
到文件,要使用>&复制,而不是>>
docker logs -t --since='2021-01-07T12:00:00' --until='2021-01-08T01:00:00' ${containerId}>& ./error.log
使用docker-compose部署docker service
docker stack deploy -c docker-compose.yml ${栈名}
根据service name推断container name
container_name=$(docker ps --filter "label=com.docker.swarm.service.name=${serviceName}" --format "{{.Names}}")