Skip to content

第三章 镜像与仓库 更新ing

第一部分 镜像(Image)

一、镜像构建

shell
# docker build 命令用于从 Dockerfile 构建 Docker 镜像
docker build [OPTIONS] PATH|URL 
## OPTIONS
#    -t, --tag: 为构建的镜像指定名称和标签
#    -f, --file: 指定 Dockerfile 的路径(默认是 当前目录 下的 Dockerfile)
#    --build-arg: 设置构建参数
#    --no-cache: 不使用缓存层构建镜像
#    --rm: 构建成功后删除中间容器(默认开启)
#    --force-rm: 无论构建成功与否,一律删除中间容器
#    --pull: 始终尝试从注册表拉取最新的基础镜像

*Dockerfile

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令,通过定义一系列命令和参数,指导构建一个自定义的镜像

dockerfile
# 基础镜像
FROM BASE_IMAGE[:TAG]
# (可选) 维护者信息
LABEL maintainer="hymsk@hymsk.top"
# ...
dockerfile
WORKDIR PATH                    # 切换到指定工作目录(类似cd命令),目录不存在则自动创建
COPY SOURCE TARGET              # 复制SOURCE路径到镜像中TARGET路径
ADD SOURCE TARGET               # 类似COPY,但SOURCE可以是tar等压缩包,会自动解压到指定目录
ENV PARAM=VALUE                 # 定义环境变量
RUN ["COMMAND"[, ..."OPTION"]]  # (shell格式)执行命令,每条RUN指令会生成一个新的镜像层
RUN COMMAND [...OPTION]         # (exec格式)执行命令,每条RUN指令会生成一个新的镜像层
CMD COMMAND [...OPTION]         # 容器启动时执行的默认命令,会被docker run后参数覆盖(支持shell/exec格式)
ENTRYPOINT COMMAND [...OPTION]  # 容器的入口程序,不会被docker run后参数覆盖(支持shell/exec格式)
VOLUME ["/PATH"]                # 声明 /PATH 为数据卷目录,未指定 -v 挂载时自动创建匿名卷挂载到 /PATH
LABEL KEYWORK=VALUE             # 为镜像添加描述信息
dockerfile
# CMD与ENTRYPOINT一般组合使用,ENTRYPOINT定义容器的固定命令(不会被覆盖),CMD定义默认参数(会被覆盖)
FROM centos
ENTRYPOINT ["curl", "-s"]    # 定义固定命令
CMD ["https://example.com"]  # 提供默认参数
# 运行时可传参:docker run IMAGE:latest https://www.example.com(会执行 curl -s https://www.example.com)

二、镜像信息

shell
# docker images 命令用于列出本地的 Docker 镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
## OPTIONS
#    -a, --all: 显示所有镜像(包括中间层镜像)
#    --digests: 显示镜像的摘要信息
#    -f, --filter: 过滤输出,基于提供的条件
#    --format: 使用 Go 模板格式化输出
#    --no-trunc: 显示完整的镜像 ID
#    -q, --quiet: 只显示镜像 ID
shell
# docker history 命令用于查看指定镜像的历史层信息
docker history [OPTIONS] IMAGE
## OPTIONS
#    -H, --human: 以人类可读的格式显示镜像大小(默认启用)
#    --no-trunc: 显示完整的输出,不截断信息
#    -q, --quiet: 仅显示镜像 ID

三、镜像管理

shell
# docker rmi 命令用于删除一个或多个 Docker 镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
## OPTIONS
#    -a, --all-tags: 指定仓库名称时,删除该仓库下的所有镜像
#    -f, --force: 强制删除镜像,即使该镜像被容器使用
#    --help: 打印帮助信息并退出
#    --no-prune: 不删除悬空的父镜像
#    -q, --quiet: 安静模式,不显示删除镜像的详细信息
shell
# docker tag 命令用于创建本地镜像的别名
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

四、导入与导出

shell
# docker save 命令用于将一个或多个 Docker 镜像保存到一个 tar 归档文件中
docker save [OPTIONS] IMAGE [IMAGE...]
## OPTIONS
#    -o, --output: 指定输出文件的路径
shell
# docker load 命令用于从由 docker save 命令生成的 tar 文件中加载 Docker 镜像
docker load [OPTIONS]
## OPTIONS
#    -i, --input: 指定输入文件的路径
#    -q, --quiet: 安静模式,减少输出信息

第二部分 仓库(Repository)

一、认证

shell
# docker login 命令用于登录到 Docker 仓库
docker login [OPTIONS] [SERVER]
## OPTIONS
#    [SERVER]: Docker 仓库 服务器地址(默认是 Docker Hub)
#    -u, --username: 登录用户名
#    -p, --password: 登录密码(不推荐在命令行使用)
#    --password-stdin: 从标准输入读取密码
shell
# docker login 命令用于退出当前登录的 Docker 仓库
docker logout [SERVER]
#    [SERVER]: Docker 仓库 服务器地址(默认是 Docker Hub)

二、镜像管理

shell
# docker search 命令用于在 Docker 仓库 中搜索镜像
docker search [OPTIONS] KEYWORD
## OPTIONS
#    --automated :只列出 automated build类型的镜像
#    --no-trunc :显示完整的镜像描述
#    -f <过滤条件>:列出收藏数不小于指定值的镜像
shell
# docker pull 命令用于从 Docker 仓库 中拉取镜像到本地
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
## OPTIONS
#    --all-tags, -a: 下载指定镜像的所有标签
#    --disable-content-trust: 跳过镜像签名验证
shell
# docker push 命令用于将本地构建的 Docker 镜像推送到 Docker 仓库
docker push [OPTIONS] NAME[:TAG]
## OPTIONS
#    --disable-content-trust :忽略镜像的校验,默认开启