二、DOCKER常用命令
一、Docker file常用指令
1、基础命令
1.1、FROM
指定基础镜像,必须为第一条指令(注释除外)
FROM [--platform=<平台>] <镜像名>[:<标签>] [AS <名称>]
如:(1)使用官方镜像
FROM ubuntu:20.04
FROM nginx:1.21-alpine
FROM python:3.9-slim
(2)使用last标签
FROM node:latest # 不推荐,因为可能意外升级
(3)指定平台架构
FROM --platform=linux/arm64 ubuntu:20.04 # 指定ARM64架构,在下x86机器上无法运行
(4)使用本地镜像
FROM --platform=linux/arm64 ubuntu:20.04 # 指定ARM64架构
(5)使用镜像摘要(最精确的版本控制)
FROM ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
1.2、RUN
RUN <command>
示例:
RUN apt-get update && apt-get install -y \curl \git \vim
1.3 COPY
从构建上下文复制文件到镜像中
COPY ./app /app
COPY requirements.txt /tmp/
1.4、ADD
类似 COPY,但功能更多(支持自动解压和远程 URL)
ADD http://example.com/file.tar.gz /tmp/
ADD local-file.tar.gz /tmp/ # 会自动解压
1.5、CMD
指定容器启动时默认执行的命令(可被 docker run 覆盖)
CMD ["python", "app.py"]
1.6、 ENTRYPOINT
配置容器启动时运行的命令(不易被覆盖)
ENTRYPOINT ["/usr/bin/nginx"]
1.7、WORKDIR
设置工作目录(后续 RUN/CMD/COPY 等指令的执行目录)
WORKDIR /app
2、环境配置指令
2.1、ENV
设置环境变量
ENV PYTHONUNBUFFERED=1
ENV APP_HOME=/app
2.2、ARG
构建时传递的变量(构建结束后不再存在)
ARG VERSION=latest
FROM ubuntu:$VERSION
2.3、EXPOSE
声明容器运行时监听的端口(不实际发布端口)
EXPOSE 80
EXPOSE 443
3、资源管理指令
3.1、VOLUME
创建挂载点
VOLUME /data
3.2、USER
指定运行容器时的用户名或 UID
USER nobody
USER 1000
二、docker常用指令
1、镜像管理
命令 | 说明 | 示例 |
---|---|---|
docker images | 列出本地镜像 | docker images -a (显示所有镜像,包括中间层) |
docker pull | 拉取镜像 | docker pull nginx:alpine (拉取指定版本) |
docker search | 搜索镜像 | docker search --limit 5 redis (显示前5个结果) |
docker rmi | 删除镜像 | docker rmi $(docker images -q) (删除所有镜像) |
docker build | 构建镜像 | docker build -t myapp:v1 . (使用当前目录Dockerfile) |
docker tag | 打标签 | docker tag nginx myrepo/nginx:v2 (重命名镜像) |
docker save/load | 导出/导入镜像 | docker save -o nginx.tar nginx (导出为tar文件) |
2、容器操作
命令 | 说明 | 示例 |
---|---|---|
docker run | 创建并启动容器 | docker run -d -p 8080:80 --name web nginx |
docker ps | 查看容器 | docker ps -a (显示所有容器,包括已停止的) |
docker start/stop | 启动/停止容器 | docker stop web |
docker exec | 进入运行中容器 | docker exec -it web bash (交互式终端) |
docker logs | 查看日志 | docker logs -f --tail 100 web (实时查看最后100行) |
docker rm | 删除容器 | docker rm -vf $(docker ps -aq) (强制删除所有容器) |
docker cp | 复制文件 | docker cp web:/etc/nginx/nginx.conf ./ (复制到主机) |
关键参数解析:
- -d:后台运行(守护模式)
- -it:交互式终端(通常配合 /bin/bash)
- -p 8080:80:端口映射(主机端口:容器端口)
- -v /host/data:/container/data:目录挂载
- --restart=always:容器退出时自动重启
3、网络管理
命令 | 说明 | 示例 |
---|---|---|
docker network ls | 列出网络 | docker network inspect bridge (查看详情) |
docker network create | 创建网络 | docker network create mynet |
docker network connect | 连接容器到网络 | docker network connect mynet web |
docker network prune | 清理未用网络 | docker network prune -f |
4、数据卷管理
命令 | 说明 | 示例 |
---|---|---|
docker volume ls | 列出数据卷 | docker volume inspect myvol |
docker volume create | 创建数据卷 | docker volume create db_data |
docker volume rm | 删除数据卷 | docker volume rm $(docker volume ls -q) |
挂载方式对比:
- 匿名卷:-v /container/path (自动生成卷名)
- 命名卷:-v vol_name:/container/path
- 主机目录:-v /host/path:/container/path
5、系统管理
命令 | 说明 | 示例 |
---|---|---|
docker info | 显示系统信息 | docker info | grep Storage (查看存储驱动) |
docker stats | 实时资源监控 | docker stats --no-stream (单次查看) |
docker system df | 查看磁盘使用 | - |
docker system prune | 清理无用资源 | docker system prune -a --volumes (彻底清理) |
6、Docker Compose 常用命令
命令 | 说明 | 示例 |
---|---|---|
docker-compose up | 启动服务 | docker-compose up -d (后台运行) |
docker-compose down | 停止服务 | docker-compose down -v (同时删除卷) |
docker-compose logs | 查看日志 | docker-compose logs -f web |
docker-compose exec | 进入服务容器 | docker-compose exec db psql -U postgres |