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.