文章目录
docker 常用命令
镜像
# 查看
docker images
# 下拉
docker pull [OPTIONS]name:tag
# 删除
docker rmi [OPTIONS]name:tag
# 导出
docker save -o image.tar.gz [OPTIONS]name:tag
# 导入
docker load -i image.tar.gz
# 重命令
docker tag image_id oldtag:newtag
# 查看详细信息
docker inspect images_id/images_name
容器
单机环境下建议使用docker-compose管理容器,比直接用 run 命令管理方便多了, docker 容器命令
# 容器详细信息
docker inspect container_id
# 查看容器日志
docker logs container_id
# 进入容器
docker exec -it container_id bash
# 容器打包
docker commit container_id [repository[:tag]]
# 删除
docker rm -f container_id # docker rm -f $(docker ps -a -q)) 干掉所有容器
网络
关于 docker 网络相关 可以查看这两篇文章 Docker之网络 和 Docker网络互联原理及自定义网络的使用
# 查看网络
docker network ls
# 创建网络 创建 bridge 类型网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 network_name
# 删除网络
docker network rm network_name
# 查看网络详细信息
docker network inspect network_id/name
docker-compose
# 启动 -d 后台启动
docker-compose up -d
# 停止,并删除关联的容器
docker-compose down
# 重启 可以单独重启某个服务
docker-compose restart [容器的名称]
# 正在运行的容器 -q 打印容器id
docker-compose ps
# docker-compose管理的容器
docker-compose images
# 进入容器
docker-compose exec [参数] [service] [CMD]
# 查看容器进程:
docker-compose top
# 查看日志 -f 监听日志
docker-compose logs -f [容器的名称]
docker swarm
# 使用 docker-compose 文件 启动服务
docker stack deploy -c docker-compose.yml stack_name
# 查看所有stack
docker stack ls
# 查看 stack 服务
docker stack services container_name
# 删除
docker stack rm stack_name
# 查看日志
docker service logs container_name
# 单独重启某个服务
docker sercice update container_name
docker-compose 和 docker swarm yml 文件区别
docker-compose和docker swarm yml文件是两种不同的文件格式,它们的作用和使用方式也有所不同:
\1. Docker Compose YML文件:用于定义和运行多个Docker容器的配置文件,支持通过docker-compose命令一键启动、停止、重启、删除应用,可以通过多种方式定义容器之间的关系和依赖,例如:link、volumes、ports、environment等。
\2. Docker Swarm YML文件:用于定义和管理Docker集群中的服务、任务和网络的配置文件,支持通过docker stack命令部署、更新、扩容和缩容服务,可以指定服务副本数量、资源限制、镜像地址、环境变量等。
# docker swarm 的yml 文件 多了 deploy 配置
deploy:
replicas: 2 # 指定服务数量
placement:
constraints: # 指定节点
- node.role == manager
# 扩容缩容
1. docker-compose
1. yml 文件中 修改 scale 的值 默认是1
2. 命令 docker-compose up --scale service_name=2
2. docker swarm
1. yml 文件中 修改 deploy 下 replicas 的值 默认是1
2. 命令 docker service scale service_name=3
其他
docker system 命令用于管理 Docker 系统:
1. docker system df:查看 Docker 系统的磁盘使用情况,包括镜像、容器、卷的占用空间和总限制空间。
参数:
- --verbose/-v:显示详细信息,包括每个容器、镜像和卷的大小。
- --no-trunc:不截断输出,显示所有信息。
2. docker system events:实时显示 Docker 系统的事件,包括容器的启动、停止、删除等操作。
参数:
- --since/-s:只显示指定时间之后的事件。
- --until/-u:只显示指定时间之前的事件。
- --filter/-f:根据条件筛选事件,可以根据容器、镜像、卷、网络等筛选。
3. docker system prune:删除在 Docker 系统中未被使用的镜像、容器、卷和网络,释放存储空间。
参数:
- --all/-a:删除所有未使用的镜像、容器、卷和网络。
- --volumes:同时删除未使用的卷。
- --force/-f:强制执行,不需要确认。
4. docker system info:查看 Docker 系统的信息,包括版本、操作系统、内存、CPU、镜像、容器和卷等。
参数:
- --format/-f:指定输出格式,可以使用 Go 模板语言。
- --time/-t:同时显示时间信息。
5. docker system prune -a –volumes:删除所有容器、镜像、网络、卷及缓存。
6. docker system prune -a:删除所有容器、镜像、网络、卷但不删除缓存。
7. docker system prune -f:清除所有没有使用的容器,镜像,卷,网络和构建缓存。
8. docker system prune -a --volumes --filter "label!=keep":删除所有未被标记为“keep”的容器、镜像、网络和卷,同时删除所有未使用的匿名卷和未附加到容器的卷。
9. docker system prune -a --volumes --filter "label!=keep" --force:强制执行命令,不需要确认。
- 批量打包docker-compose.yml 文件中镜像脚本
#!/bin/bash
save_dir="./images"
mkdir -p ${save_dir}
for file in $(find ./ -maxdepth 1 -name "docker-compose*.yml"); do
for image_name in $(cat "${file}" | awk '{if ($1 == "image:") print $2;}'); do
pack_name=$(echo "$image_name" | sed 's/\//_/g' | sed 's/:/-/g')
echo "Pack image: $image_name to ${save_dir}/$pack_name.tgz..."
docker pull "${image_name}"
docker save "${image_name}" -o ${save_dir}/"${pack_name}".tar
tar -czvf ${save_dir}/"${pack_name}".tgz ${save_dir}/"${pack_name}".tar
rm -rf $save_dir/"${pack_name}".tar
echo ""
done
done