Docker 帮助类命令

1
docker --help
  • 功能:显示 Docker 命令行工具的全局帮助信息,包括所有可用的子命令列表,以及如何使用 Docker 命令的基本语法结构。
  • 示例:在终端输入 docker --help,会输出类似以下内容:
image-20250708144835613
1
docker COMMAND --help
  • 功能:显示具体某个 Docker 子命令的帮助信息,比如想了解 docker run 命令的详细用法和参数说明,就可以使用 docker run --help 。它会列出该命令的语法格式、各个参数的含义、以及一些使用示例。
  • 示例:执行 docker run --help,输出内容会包含:
image-20250708144953099
1
docker help
  • 功能:与 docker --help 类似,会列出 Docker 所有可用的子命令,并且在每个子命令后面提供简短的功能描述,方便用户快速浏览和查找需要的命令。
image-20250708145033320

Docker操作命令

查看docker 概要信息

1
docker info 
image-20250708153207050

拉取镜像

1
docker pull [镜像名称]:[标签]
  • 作用:从Docker仓库中拉取现有的镜像
  • 示例image-20250708165329622

构建镜像

1
docker build -t [镜像名称]:[标签] [Dockerfile所在路径]
  • 作用:构建自己的Docker镜像

  • 示例:

    image-20250708154814696

​ 我没搞dockerfile,所以肯定删不掉

删除镜像

1
docker rmi [镜像ID或名称]

示例:

image-20250708165955727

保存/加载镜像

1
2
docker save -o [输出文件] [镜像名称]
docker load -i [输入文件]

登录 / 登出 Docker Hub

要登录到Docker仓库或私有镜像仓库,可以使用以下命令

1
2
docker login
docker logout

登录后,您可以使用docker pulldocker push命令来拉取和推送镜像。

推送镜像到 Docker Hub

1
docker push [镜像名称]

查找有没有某个镜像

1
docker search [OPTIONS] TERM
  • 作用:在 Docker Hub(官方镜像仓库)中搜索符合条件的镜像
  • TERM:搜索关键词,例如 nginxpython 等。
  • 常用选项
    • --filter=stars=N:只显示星级评分 ≥ N 的镜像(如 --filter=stars=5)。
    • --filter=is-official=true:只显示官方镜像。
    • --filter=is-automated=true:只显示自动化构建的镜像。
    • --limit=N:限制返回结果数量(默认 25 个)

列出本地镜像

1
docker images
  • 作用:列出本地所有的镜像,包括运行的没运行的
  • 示例:
image-20250708154616590

列出网络

1
docker network ls
image-20250708155352744

连接容器到网络

1
docker network connect [网络名称] [容器ID或名称]

Docker 容器操作命令

启动类命令

运行容器

1
docker run 镜像名称或者ID
  • 功能:这是最常用的启动容器的命令,它会先检查本地是否存在指定镜像,如果不存在则从镜像仓库(默认是 Docker Hub)拉取,然后基于该镜像创建一个新的容器并启动,同时可以指定容器运行的各种参数,如端口映射、挂载卷、环境变量等。

  • 示例

    • 启动一个简单的 hello-world 容器:docker run hello-world ,用于验证 Docker 是否正常工作。

    • 启动一个交互式的 Ubuntu 容器:docker run -it ubuntu bash ,其中 -i 表示保持 STDIN 打开,-t 为容器分配一个伪终端,进入容器后可以执行 Ubuntu 系统的命令。

    • 如果不需要命令行,就可以使用-d后台静默

      image-20250708145324638

      输入如下命令

      1
      2
      3
      4
      5
      6
      7
      8
      # 查看 Ubuntu 版本
      lsb_release -a

      # 查看内核版本
      uname -r

      # 查看系统进程(容器内的进程)
      ps aux
      image-20250708145450736

      由于这里面啥也没有,所以有些命令执行不了

    • 启动一个映射本地 8080 端口到容器 80 端口的 Nginx 容器:docker run -p 8080:80 nginx ,这样可以通过访问本地的 8080 端口来访问容器内运行的 Nginx 服务。

启动容器

1
docker start <容器ID或名称>
  • 功能:用于启动一个或多个已经被停止的容器。与 docker run 不同,docker start 不会创建新容器,只是让已经存在的停止状态的容器重新运行起来。

  • 示例:我们打开上面的容器,先用docker ps -a查看所有容器,然后启动,使用docker exec -it <容器ID或名称> bash进入容器

    image-20250708145913993

重启容器

1
docker restart
  • 功能:先停止指定的容器,然后再重新启动它,相当于依次执行 docker stopdocker start 命令。
  • 示例:我们重启上述容器
image-20250708150108472

停止类命令

停止容器

1
docker stop <容器ID或名称>
  • 功能:向容器内的主进程发送 SIGTERM 信号(优雅停止),等待进程自行关闭(默认等待 10 秒),若超时则发送 SIGKILL 强制终止。
  • 示例:我们终止上述容器
image-20250708150638299
  • 扩展:

    1
    docker stop $(docker ps -q)  # 结合 ps -q 获取所有容器 ID

强制停止容器

1
docker kill <容器ID或名称>
  • 作用:直接发送 SIGKILL 信号强制终止容器(不等待进程优雅退出)。
  • 适用场景:容器无响应或 docker stop 超时,需要立即终止。示例和上面其实一样

暂停 / 恢复 容器

1
2
docker pause <容器ID或名称>   # 暂停容器
docker unpause <容器ID或名称> # 恢复容器
  • 作用:通过 Linux 的 cgroups freezer 机制暂停 / 恢复容器内的所有进程(类似 “冻结”)。

  • 特点

    • 暂停后容器不占用 CPU 资源,但内存状态会保留。
    • stop 不同,pause 不会终止进程,恢复后进程继续运行。
  • 示例:还是以上述Ubuntu容器为例子

    image-20250708150859090

查看容器

查看运行中的容器

1
docker ps
  • 输出内容:容器 ID、名称、使用的镜像、启动命令、运行时间、端口映射等。

  • 常用参数

    • -a:显示所有容器(包括已停止的)。
    • -q:只输出容器 ID(静默模式,用于脚本自动化)。
    • -l:显示最近创建的容器。
    • --format:自定义输出格式(如 --format '{{.Names}}: {{.Status}}')。
  • 示例:还是查看上述容器的信息

    image-20250708151839316

查看容器详细信息

1
docker inspect <容器ID或名称>
  • 作用:以 JSON 格式返回容器的底层详细信息(网络配置、挂载点、环境变量等)。

  • 常用过滤:通过 --format 提取特定字段。

  • 示例:还是操作上述容器

    1
    2
    3
    4
    5
    # 获取容器 IP 地址
    docker inspect --format='{{.NetworkSettings.IPAddress}}' my-container

    # 获取容器挂载的卷路径
    docker inspect --format='{{range .Mounts}}{{.Source}} -> {{.Destination}}{{end}}' my-container
    image-20250708152044664

实时监控容器资源使用

1
docker stats [容器ID或名称...]
  • 输出内容:CPU、内存、网络 I/O、磁盘 I/O 等实时使用情况。

  • 示例

    1
    2
    docker stats  # 监控所有运行中的容器
    docker stats my-container # 监控指定容器
    image-20250708152231579
  • 参数

    • --no-stream:只显示一次结果(非实时)。
    • --format:自定义输出格式(如 --format '{{.Name}}: {{.CPUPerc}}')。

查看容器日志

1
docker logs <容器ID或名称>
  • 常用参数

    • -f:实时跟踪日志输出(类似 tail -f)。
    • --tail N:显示最近的 N 行日志。
    • --since:显示指定时间之后的日志(如 --since 2023-01-01)。
  • 示例

    1
    2
    docker logs -f my-container  # 实时查看日志
    docker logs --tail 100 my-container # 查看最近 100 行日志
    image-20250708152340701

查看容器端口映射

1
docker port <容器ID或名称>

示例:

查看容器内运行的进程

1
docker top <容器ID或名称>

示例

image-20250708152536517

查看容器文件系统变更

1
docker diff <容器ID或名称>
  • 输出:显示容器文件系统相对于基础镜像的变更(A 添加、D 删除、C 修改)。
image-20250708152650186

查看容器创建时的命令

1
docker inspect --format='{{.Config.Cmd}}' my-container

删除容器

删除已停止的容器

1
docker rm <容器ID或名称>
  • 作用:该命令会删除指定的已停止的容器,所以也就是,容器在删除之前需要停止

  • 示例:删除上面的容器

删除所有已停止的容器

1
docker container prune
  • 注意:该命令会删除所有已停止的容器,需谨慎操作。
  • 交互提示:执行后会提示确认,可添加 -f 强制删除。

强制删除运行中的容器

1
docker rm -f <容器ID或名称>
  • 不再赘述,和上面差不多,只不过这个是运行中的都能直接删除,需要确认

Docker 容器内部操作命令

进入容器

1
docker exec -it [容器ID或名称] [命令]
  • 作用:进入一个正在运行的容器
  • 示例其实上面已经演示过了

进程与资源监控

查看进程

1
ps [选项]
  • 常用选项

    • -ef:显示所有进程的详细信息。
    • -aux:显示所有进程(包括无控制终端的进程)。
  • 示例:

    image-20250708160220735

实时监控进程资源占用

1
top
  • 常用操作

    • q:退出。
    • 1:显示所有 CPU 核心的使用情况。
    • M:按内存使用排序。
    • P:按 CPU 使用排序。
  • 示例:

    image-20250708160313366

查看磁盘使用情况

1
df [选项]
  • 常用选项

    • -h:以人类可读的格式显示。
  • 示例

    image-20250708160353953

查看内存使用情况

1
free [选项]
  • 常用选项

    • -h:以人类可读的格式显示。
  • 示例

    image-20250708160431249

文件与目录操作

列出文件和目录

1
ls [选项] [目录]
  • 常用选项

    • -l:详细列表(显示权限、所有者、大小等)。
    • -a:显示所有文件(包括隐藏文件)。
    • -h:以人类可读的格式显示文件大小。
  • 示例:

    1
    ls -la /app  # 列出 /app 目录下的所有文件和目录的详细信息

切换目录

1
cd [目录路径]
  • 示例:

    1
    2
    cd /var/log  # 进入 /var/log 目录
    cd .. # 返回上级目录

创建目录

1
mkdir [选项] [目录名]
  • 常用选项

    • -p:递归创建目录(自动创建不存在的父目录)。

      1
      mkdir -p /data/app/logs  # 创建多级目录

复制文件或者目录

1
cp [选项] [源文件/目录] [目标路径]
  • 常用选项

    • -r:递归复制目录。
  • 示例

    1
    2
    cp /app/config.ini /tmp/  # 复制单个文件
    cp -r /app /backup/ # 复制整个目录

移动或重命名文件 / 目录

1
mv [源文件/目录] [目标路径]
  • 示例:

    1
    2
    mv /app/config.ini /app/prod.ini  # 重命名文件
    mv /app /opt/ # 移动目录

删除文件或目录

1
rm [选项] [文件/目录]
  • 常用选项

    • -r:递归删除目录。
    • -f:强制删除(不提示确认)。
  • 示例

    1
    2
    rm /app/temp.txt       # 删除单个文件
    rm -rf /app/cache/ # 强制删除目录及其内容

查看文件内容

1
cat [文件]
  • 示例:

    1
    cat /etc/hosts

分页查看大文件

1
less [文件]
  • 常用操作
    • 空格:向下翻页。
    • b:向上翻页。
    • /关键词:搜索关键词。
    • q:退出。

其他操作

下载文件或测试 HTTP 请求

1
curl [选项] [URL]

或者

1
wget [选项] [URL]
  • 示例:

    我那个镜像没下wget

image-20250708160739209

查看网络接口信息

1
ifconfig
1
ip addr show  # 查看网络接口信息

包管理-linux版

Debian/Ubuntu(APT)

1
2
3
apt-get install [包名]   # 安装包
apt-get update # 更新包
apt-get upgrade # 升级已安装的包

CentOS/RHEL(YUM)

1
2
yum install [包名]   # 安装包
yum update # 更新包

输出文本或设置环境变量

1
echo [文本]
image-20250708161046492

查看环境变量

1
env
image-20250708161118347

修改文件权限

1
chmod [权限模式] [文件/目录]
  • 示例:

    1
    2
    chmod +x /app/script.sh  # 给脚本添加执行权限
    chmod 755 /app # 设置目录权限为 rwxr-xr-x

修改文件所有者

1
chown [所有者]:[组] [文件/目录]
  • 示例:

    1
    chown www-data:www-data /var/www/html  # 将目录所有权赋予 www-data 用户和组

Dockerfile 相关命令

在 Docker 中,Dockerfile 是用于构建镜像的脚本文件

构建与使用Dockerfile

构建镜像

1
docker build -t my-flask-app:1.0 .
  • 参数

    • -t:指定镜像标签(名称:版本)。

    • .:构建上下文路径(Dockerfile 所在目录)。

传递构建参数

1
docker build --build-arg VERSION=2.0 -t my-app:2.0 .

核心命令

指定基础镜像

1
FROM ubuntu:20.04
  • 作用:指定构建镜像的基础镜像(必须为第一条指令)。

  • 示例:

    1
    2
    FROM python:3.9-slim  # 使用官方 Python 镜像
    FROM scratch # 构建基础镜像(用于静态编译的应用)
    image-20250708162823613

维护者信息

1
LABEL maintainer="your-email@example.com"
  • 作用:为镜像添加元数据(推荐使用 LABEL 替代 MAINTAINER)。

  • 示例:

    1
    2
    LABEL version="1.0"
    LABEL description="A simple web application"

运行命令

1
2
3
RUN apt-get update && apt-get install -y \
python3 \
python3-pip
  • 作用:在构建镜像时执行命令(如安装软件、编译代码等)。
  • 格式:
    • shell 格式RUN command(如 RUN echo "Hello")。
    • exec 格式RUN ["executable", "param1", "param2"](如 RUN ["/bin/sh", "-c", "echo Hello"])。

文件操作命令

复制文件

1
2
COPY app.py /app/
COPY requirements.txt /app/
  • 作用:从宿主机复制文件 / 目录到镜像中。
  • 参数
    • --chown:指定文件所有者(如 COPY --chown=user:group src dest)。

下载远程文件

1
ADD https://example.com/file.tar.gz /tmp/
  • 作用:类似 COPY,但支持远程 URL 和自动解压(如 .tar.gz 文件)。

  • 示例

    1
    ADD app.tar.gz /app/  # 自动解压 tar 文件

设置工作目录

1
WORKDIR /app
  • 作用:为后续的 RUNCOPYCMD 等命令设置工作目录。

  • 示例:

    1
    2
    WORKDIR /app
    RUN pip install -r requirements.txt # 等价于在 /app 目录执行

容器启动命令

默认执行命令

1
CMD ["python", "app.py"]
  • 作用:指定容器启动时默认执行的命令。
  • 格式
    • exec 格式(推荐):CMD ["executable", "param1", "param2"]
    • shell 格式CMD command param1 param2
  • 注意
    • 一个 Dockerfile 中只能有一个 CMD,若有多个则仅最后一个生效。
    • CMD 可被 docker run 的命令覆盖(如 docker run my-image bash)。

容器入口点位

1
2
ENTRYPOINT ["python", "app.py"]
CMD ["--port=8080"] # 作为默认参数
  • 作用:配置容器启动时执行的命令,且不可被 docker run 覆盖(参数可覆盖)。

  • 示例:

    1
    ENTRYPOINT ["nginx", "-g", "daemon off;"]  # 固定启动 Nginx

暴露端口

1
EXPOSE 8080/tcp
  • 作用:声明容器运行时监听的端口(仅作文档用途,需在 docker run 时用 -p 映射)。

定义挂载点

1
VOLUME ["/data"]
  • 作用:声明容器运行时的挂载点(用于数据持久化)。

  • 示例

    1
    VOLUME ["/var/log/app"]  # 挂载日志目录