Docker 基本命令

1. 版本和信息

# 查看 Docker 版本
docker --version
docker version

# 查看详细信息
docker info

2. 服务管理

# 启动 Docker 服务
sudo systemctl start docker

# 停止 Docker 服务
sudo systemctl stop docker

# 重启 Docker 服务
sudo systemctl restart docker

# 设置开机自启
sudo systemctl enable docker

# 查看服务状态
sudo systemctl status docker

容器管理命令

1. 容器生命周期

# 创建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  -d           # 后台运行
  -it          # 交互式终端
  --name       # 指定容器名称
  -p 8080:80   # 端口映射(主机:容器)
  -v /host:/container  # 挂载卷
  --network    # 指定网络
  --restart    # 重启策略(always, on-failure, unless-stopped)
  --env, -e    # 设置环境变量

# 启动已停止的容器
docker start CONTAINER

# 停止容器
docker stop CONTAINER

# 重启容器
docker restart CONTAINER

# 强制停止容器
docker kill CONTAINER

# 暂停容器
docker pause CONTAINER

# 恢复暂停的容器
docker unpause CONTAINER

2. 容器操作

# 列出运行中的容器
docker ps

# 列出所有容器(包括已停止)
docker ps -a

# 进入容器交互式终端
docker exec -it CONTAINER /bin/bash

# 查看容器日志
docker logs CONTAINER
docker logs -f CONTAINER  # 实时日志
docker logs --tail 100 CONTAINER  # 最后100行

# 查看容器详细信息
docker inspect CONTAINER

# 复制文件(容器与主机之间)
docker cp CONTAINER:/path/to/file /host/path  # 从容器复制到主机
docker cp /host/path CONTAINER:/path/to/file  # 从主机复制到容器

# 查看容器资源使用情况
docker stats [CONTAINER]

# 更新容器配置
docker update [OPTIONS] CONTAINER

3. 容器清理

# 删除已停止的容器
docker rm CONTAINER

# 删除所有已停止的容器
docker container prune

# 强制删除运行中的容器
docker rm -f CONTAINER

# 批量删除所有容器(包括运行中)
docker rm -f $(docker ps -aq)

镜像管理命令

1. 镜像操作

# 列出本地镜像
docker images
docker image ls

# 搜索镜像
docker search TERM

# 拉取镜像
docker pull IMAGE[:TAG]

# 构建镜像
docker build -t NAME:TAG .  # 在当前目录查找Dockerfile

# 推送镜像到仓库
docker push IMAGE[:TAG]

# 给镜像添加标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

# 查看镜像详细信息
docker image inspect IMAGE

# 查看镜像历史
docker history IMAGE

2. 镜像清理

# 删除特定镜像
docker rmi IMAGE

# 强制删除镜像(即使有容器使用)
docker rmi -f IMAGE

# 删除未使用的镜像(没有容器使用的)
docker image prune

# 批量删除未使用镜像
docker image prune -a

# 删除所有镜像
docker rmi $(docker images -q)

3. 镜像导入导出

# 导出镜像到文件
docker save -o filename.tar IMAGE

# 从文件加载镜像
docker load -i filename.tar

# 镜像导出为 tar 文件
docker export CONTAINER > container.tar

# 从 tar 导入为镜像
docker import container.tar IMAGE:TAG

网络管理命令

# 列出所有网络
docker network ls

# 创建自定义网络
docker network create [OPTIONS] NETWORK
  --driver bridge  # 网络类型:bridge、overlay、macvlan等
  --subnet         # 指定子网
  --gateway        # 指定网关

# 查看网络详情
docker network inspect NETWORK

# 将容器连接到网络
docker network connect NETWORK CONTAINER

# 断开容器与网络的连接
docker network disconnect NETWORK CONTAINER

# 删除网络
docker network rm NETWORK

# 清理未使用的网络
docker network prune

存储卷管理命令

# 列出所有卷
docker volume ls

# 创建数据卷
docker volume create [OPTIONS] [VOLUME]

# 查看卷详情
docker volume inspect VOLUME

# 删除卷
docker volume rm VOLUME

# 清理未使用的卷
docker volume prune

# 创建并挂载数据卷
docker run -v VOLUME:/container/path IMAGE
docker run --mount source=VOLUME,target=/container/path IMAGE

系统维护命令

# 查看 Docker 磁盘使用情况
docker system df

# 清理未使用的资源(容器、网络、镜像、卷)
docker system prune
docker system prune -a  # 包括未使用的镜像

# 实时查看 Docker 事件
docker events

# 查看所有容器的资源使用情况
docker stats

# 验证 Docker 安装和配置
docker info

# 重启 Docker 守护进程(不同系统命令可能不同)
sudo systemctl restart docker

Dockerfile 常用指令

# 基础镜像
FROM image:tag

# 维护者信息
LABEL maintainer="[email protected]"

# 设置环境变量
ENV KEY=value

# 工作目录
WORKDIR /path/to/workdir

# 复制文件
COPY source destination
ADD source destination  # 支持URL和自动解压缩

# 运行命令
RUN command

# 暴露端口
EXPOSE port

# 设置卷
VOLUME /data

# 容器启动执行命令
CMD ["executable", "param1", "param2"]
ENTRYPOINT ["executable", "param1", "param2"]

Docker Compose 常用命令

# 启动所有服务
docker-compose up
docker-compose up -d  # 后台运行

# 停止所有服务
docker-compose down

# 重启服务
docker-compose restart [SERVICE]

# 构建服务
docker-compose build [SERVICE]

# 查看日志
docker-compose logs [SERVICE]

# 执行命令
docker-compose exec SERVICE COMMAND

# 查看服务状态
docker-compose ps

高级操作

# 资源限制
docker run --memory="512m" --cpus="2" IMAGE

# 查看容器内运行的进程
docker top CONTAINER

# 在容器和主机之间共享进程命名空间
docker run --pid=host IMAGE

# 设置容器重启策略
docker run --restart=always IMAGE

# 检查 Docker 安全性
docker scan IMAGE

# 查看更多命令帮助
docker COMMAND --help

常见故障排查

# 查看容器日志
docker logs CONTAINER

# 查看详细状态
docker inspect CONTAINER

# 使用交互式终端进入容器
docker exec -it CONTAINER /bin/bash

# 检查容器健康状态
docker inspect --format='{{.State.Health.Status}}' CONTAINER

# 如果守护进程无法启动
sudo journalctl -u docker.service

Q.E.D.


夜阑卧听风吹雨,铁马冰河入梦来。