天天被问Docker命令怎么用?索性整理一份,涵盖日常95%的docker操作,都是干货,以后直接甩链接得了!
# 拉取nginx最新版
docker pull nginx
# 拉指定版本(opsnot推荐)
docker pull nginx:1.24-alpine
docker images
# 只看镜像ID,方便批量操作
docker images -q
# 删单个
docker rmi nginx:latest
# 批量删没用的镜像(慎用!)
docker rmi $(docker images -q)
# opsnot.com提示:删之前先确认下
docker images | grep none
# 基础构建
docker build -t myapp:v1 .
# 指定Dockerfile路径
docker build -f /path/to/Dockerfile -t myapp:v1 .
# 不用缓存重新构建
docker build --no-cache -t myapp:v1 .
# 最简单的启动
docker run nginx
# 后台运行 + 端口映射(常用)
docker run -d -p 8080:80 --name my-nginx nginx
# 挂载数据卷 + 环境变量
docker run -d \
  -p 3306:3306 \
  -v /data/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=opsnot123 \
  --name mysql8 \
  mysql:8.0
# 限制资源使用
docker run -d \
  --memory="512m" \
  --cpus="0.5" \
  -p 8080:80 \
  nginx
# 看运行中的
docker ps
# 看所有容器(包括停止的)
docker ps -a
# 只看容器ID
docker ps -q
# 看最近创建的5个
docker ps -n 5
# 优雅停止(给10秒处理时间)
docker stop my-nginx
# 强制停止
docker kill my-nginx
# 启动已停止的容器
docker start my-nginx
# 重启
docker restart my-nginx
# 删单个(必须先停止)
docker rm my-nginx
# 强制删除运行中的
docker rm -f my-nginx
# 批量删所有停止的容器
docker rm $(docker ps -aq -f status=exited)
# opsnot经验:删之前看清楚
docker ps -a | grep Exited
# 进容器bash(最常用)
docker exec -it my-nginx bash
# 有些镜像没bash,用sh
docker exec -it my-nginx sh
# 执行单条命令不进容器
docker exec my-nginx ls /etc/nginx
# 以root身份进入
docker exec -u root -it my-nginx bash
# 查看日志
docker logs my-nginx
# 实时查看(跟tail -f一样)
docker logs -f my-nginx
# 只看最后100行
docker logs --tail 100 my-nginx
# 带时间戳
docker logs -t my-nginx
# opsnot.com常用组合
docker logs -f --tail 200 my-nginx
# 创建数据卷
docker volume create my-data
# 查看所有卷
docker volume ls
# 查看卷详情
docker volume inspect my-data
# 删除卷
docker volume rm my-data
# 删除所有未使用的卷(小心!)
docker volume prune
# 查看网络
docker network ls
# 查看网络详情
docker network inspect my-network
# 创建自定义网络
docker network create my-network
# 容器连接到网络
docker network connect my-network my-nginx
# 断开网络
docker network disconnect my-network my-nginx
# 删除所有停止的容器
docker container prune
# 删除所有未使用的镜像
docker image prune
# 删除所有未使用的卷
docker volume prune
# 删除所有未使用的网络
docker network prune
# 一键清理所有(慎用!)
docker system prune -a
# opsnot推荐:看看能释放多少空间
docker system df
# 实时查看容器资源使用
docker stats
# 只看指定容器
docker stats my-nginx
# 查看容器详细信息
docker inspect my-nginx
# 查看容器内进程
docker top my-nginx
# 导出镜像
docker save -o nginx.tar nginx:latest
# 导入镜像
docker load -i nginx.tar
# 导出容器(含修改)
docker export my-nginx > nginx-container.tar
# 导入容器为镜像
docker import nginx-container.tar my-nginx:v1
# 启动服务(后台)
docker-compose up -d
# 停止服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看服务日志
docker-compose logs -f
# 重启服务
docker-compose restart
# 只重启某个服务
docker-compose restart nginx
# 构建并启动
docker-compose up -d --build
#!/bin/bash
# opsnot清理脚本
echo "停止所有容器..."
docker stop $(docker ps -q)
echo "删除所有容器..."
docker rm $(docker ps -aq)
echo "清理未使用的镜像..."
docker image prune -a -f
echo "清理完成!"
docker system df
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-nginx
# 从容器复制到宿主机
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf
# 从宿主机复制到容器
docker cp ./nginx.conf my-nginx:/etc/nginx/nginx.conf
# 启动时设置
docker run -d \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx
# 查看容器启动失败原因
docker logs container_name
# 查看容器退出状态码
docker ps -a | grep container_name
# 查看容器占用的端口
docker port container_name
# 进入容器排查(容器运行中)
docker exec -it container_name bash
# 查看Docker版本信息
docker version
# 查看Docker系统信息
docker info
基本上常用的就这些,遇到问题先google,别动不动就删容器重来。记住:先查日志,再看配置,最后才重启。
有问题留言,我看到会回。
本文由 opsnot.com 整理,转载请注明出处