概述
Docker 是一个开源的应用容器引擎,允许开发者打包应用及其依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上。
基本概念
- 镜像(Image):Docker 镜像是一个只读模板,用于创建 Docker 容器
- 容器(Container):容器是镜像的可运行实例
- 仓库(Registry):Docker 仓库用来保存镜像,分为公有和私有两种
镜像管理命令
获取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 示例
docker pull ubuntu:20.04
docker pull nginx
列出镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
# 示例
docker images
docker images -a # 显示所有镜像
docker images --digests # 显示摘要信息
删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 示例
docker rmi ubuntu:20.04
docker rmi -f image_id # 强制删除
构建镜像
docker build [OPTIONS] PATH | URL | -
# 示例
docker build -t myapp:1.0 .
docker build -f Dockerfile.dev -t myapp:dev .
镜像历史
docker history [OPTIONS] IMAGE
# 示例
docker history nginx
容器管理命令
运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 示例
docker run -it ubuntu:20.04 /bin/bash
docker run -d -p 80:80 nginx # 后台运行
docker run --name mynginx -d nginx # 指定容器名
常用选项:
-d: 后台运行容器-it: 交互模式运行容器-p: 端口映射(主机端口:容器端口)-v: 卷挂载(主机目录:容器目录)--name: 指定容器名称--rm: 容器退出时自动删除-e: 设置环境变量
列出容器
docker ps [OPTIONS]
# 示例
docker ps # 运行中的容器
docker ps -a # 所有容器
docker ps -q # 只显示容器ID
docker ps -f status=exited # 按状态过滤
启动/停止容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 示例
docker start mynginx
docker stop mynginx
删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 示例
docker rm mynginx
docker rm -f mynginx # 强制删除运行中的容器
docker container prune # 删除所有停止的容器
进入容器
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 示例
docker exec -it mynginx /bin/bash
docker exec mynginx ls /app
查看容器日志
docker logs [OPTIONS] CONTAINER
# 示例
docker logs mynginx
docker logs -f mynginx # 实时日志
docker logs --tail 100 mynginx # 最后100行
查看容器信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
# 示例
docker inspect mynginx
docker inspect --format='{{.NetworkSettings.IPAddress}}' mynginx
网络管理命令
列出网络
docker network ls [OPTIONS]
# 示例
docker network ls
创建网络
docker network create [OPTIONS] NETWORK
# 示例
docker network create mynetwork
连接容器到网络
docker network connect [OPTIONS] NETWORK CONTAINER
# 示例
docker network connect mynetwork mynginx
断开网络连接
docker network disconnect [OPTIONS] NETWORK CONTAINER
# 示例
docker network disconnect mynetwork mynginx
数据卷管理命令
列出卷
docker volume ls [OPTIONS]
# 示例
docker volume ls
创建卷
docker volume create [OPTIONS] [VOLUME]
# 示例
docker volume create myvolume
删除卷
docker volume rm [OPTIONS] VOLUME [VOLUME...]
# 示例
docker volume rm myvolume
docker volume prune # 删除所有未使用的卷
其他常用命令
查看Docker信息
docker info [OPTIONS]
# 示例
docker info
查看版本信息
docker version [OPTIONS]
# 示例
docker version
复制文件
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
# 示例
docker cp mynginx:/etc/nginx/nginx.conf ./
docker cp ./config.json mynginx:/app/config.json
Docker Compose 常用命令
启动服务
docker-compose up [OPTIONS]
# 示例
docker-compose up -d # 后台启动
docker-compose up --build # 重新构建镜像后启动
停止服务
docker-compose down [OPTIONS]
# 示例
docker-compose down
docker-compose down -v # 同时删除卷
查看服务状态
docker-compose ps [OPTIONS]
# 示例
docker-compose ps
查看服务日志
docker-compose logs [OPTIONS] [SERVICE...]
# 示例
docker-compose logs
docker-compose logs -f web # 实时查看web服务日志
实用技巧
清理Docker资源
# 删除所有停止的容器
docker container prune
# 删除所有未被使用的镜像
docker image prune -a
# 删除所有未被使用的网络
docker network prune
# 删除所有未被使用的卷
docker volume prune
# 一键清理所有未使用的资源
docker system prune -a
查看资源使用情况
docker stats [OPTIONS] [CONTAINER...]
# 示例
docker stats # 所有容器资源使用
docker stats nginx mysql # 指定容器资源使用