1.Docker常用命令概述

1.2 镜像管理命令 

还有许多其他Docker命令,如查看容器列表的docker ps,获取容器底层信息的docker inspect,显示容器进程的docker top,以及附上运行容器的docker attach等。同时,还有版本管理、镜像仓库管理、本地镜像管理等相关命令,如创建新镜像的docker commit,拉取和推送镜像的docker pull和docker push,搜索镜像的docker search等 

1.2.1 docker search image_name 检索image


1.2.2 docker pull image_name 下载镜像

拉取过程优化

# 指定平台拉取
docker pull --platform linux/arm64 myregistry.com/app:1.0

# 仅下载元数据
docker pull --quiet myregistry.com/app:1.0

# 断点续传技巧
docker save myregistry.com/app:1.0 | pv | ssh user@host docker load
拉取策略对比
策略 命令示例 特点
默认拉取 docker pull app:1.0 完整下载所有层
内容信任验证 DOCKER_CONTENT_TRUST=1 校验签名防止篡改
增量更新 docker pull app:latest 仅下载变更层(复用缓存)

1.2.3 docker push new_image_name发布docker镜像

推送全流程解析

# 认证私有仓库
docker login myregistry.com -u user -p password

# 标准推送操作
docker push myregistry.com/app:1.0

# 多架构镜像推送
docker buildx build --platform linux/amd64,linux/arm64 --push -t myregistry.com/app:1.0 .

安全推送实践

# 签名镜像(需配置Docker Content Trust)
export DOCKER_CONTENT_TRUST=1
docker push myregistry.com/app:1.0

# 漏洞扫描集成
docker scan myregistry.com/app:1.0

1.2.4 docker images 列出本地镜像

 -a, --all=false Show all images;

--no-trunc=false Don't truncate output;

-q, --quiet=false Only show numeric IDs

1.2.5 docker rmi image_name  删除一个或者多个镜像


-f, --force=false Force;

--no-prune=false Do not delete untagged parents


1.2.6 docker history image_name 显示一个镜像的历史;

--no-trunc=false Don't truncate output;

-q, --quiet=false Only show numeric IDs

1.2.7 docker import:通过tar文件导入镜像

语法:

docker import [参数选项] file | URL | - [REPOSITORY[:TAG]]。

参数解释:
file|URL|-:输入文件的路径、本地文件或 URL,或者使用 - 从标准输入读取。
[REPOSITORY[:TAG]]:(可选)为导入的镜像指定仓库和标签。

-c, --change:在导入过程中应用 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV 等。
-m, --message:为导入的镜像添加注释。

# 1、从本地 tar 文件导入镜像,并命名为 mynewimage:latest。
docker import mycontainer.tar mynewimage:latest

# 2、从 URL 导入镜像,并命名为 mynewimage:latest。
docker import http://example.com/mycontainer.tar mynewimage:latest

# 3、从标准输入导入镜像,这将通过管道从标准输入读取 tar 文件并导入镜像。
cat mycontainer.tar | docker import - mynewimage:latest

# 4、在导入过程中应用变更,这将从 mycontainer.tar 导入镜像,并在过程中设置环境变量 LANG 和命令 CMD。
docker import -c “ENV LANG=en_US.UTF-8” -c “CMD /bin/bash” mycontainer.tar mynewimage:latest



# ①导出容器快照:
# 创建并运行一个容器
docker run -d --name myContainer ubuntu:20.04 sleep 3600
# 导出容器快照
docker export myContainer -o myContainer.tar
# ②导入容器快照:
docker import myContainer.tar mynewimage:latest
# 运行导入的镜像
docker run -it mynewimage:latest /bin/bash

注意事项:
①docker import 创建的镜像不会保留原始镜像的历史和元数据。
②使用 -c 选项可以在导入过程中应用 Dockerfile 指令,从而自定义新镜像的配置。
③导入的 tar 文件必须是使用 docker export 创建的容器快照,或者是兼容的其他格式。

总结:
docker import 命令是一种从容器快照创建新镜像的灵活方法,适用于迁移、恢复和自定义 Docker 镜像的场景。通过使用 docker import,用户可以轻松地从容器快照生成新的镜像,并在导入过程中应用额外的配置。

1.2.8 docker load:加载已保存的tar镜像

docker load -i cuda-docker.tar

就将上方的cuda-docker.tar包导入到本机环境中,之后执行docker run命令就可以启动docker镜像

1.2.9  docker login 登录registry server

# 登陆registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username  
$docker login 

1.2.10 【重点】docker build构建Dockerfile 镜像

(1)语法命令
docker build [OPTIONS] PATH | URL | -
(2)构建上下文

构建上下文是构建过程中的目录或路径,Docker 会从中获取文件以及构建时所需的资源(包括 Dockerfile)。常见的构建上下文有

  • 当前目录 (.):指定当前目录作为构建上下文。
  • 路径PATH:指定本地路径,作为构建上下文。
  • URL:也可以使用 Git 仓库的 URL,指定一个远程 URL ,作为构建上下文
  • -:表示从标准输入读取 Dockerfile。
docker build https://github.com/myrepo/myapp.git

(3)常用选项及详细说明
短参数 长参数 描述 示例
-t --tag
  • 为构建的镜像指定标签(名称:标签)。标签是镜像的唯一标识,通常采用 name:tag 的格式
  • 如果没有提供 tag,默认会使用 latest 标签。
# 这会创建一个名为 myapp,标签为 latest 的镜像
docker build -t myapp:latest .

-f --file
  • 指定一个 Dockerfile 文件。如果没有指定,默认会在当前目录查找 Dockerfile
  • 这可以让你指定不同的 Dockerfile,例如在多环境构建中使用不同的文件
# 这会使用 Dockerfile.prod 文件来构建镜像。
docker build -f ./Dockerfile.prod -t myapp:prod

--build-arg 用于在构建过程中传递参数。可以在 Dockerfile 中使用这些构建参数
#在 Dockerfile 中可以使用 ARG VERSION 来访问该参数。
docker build --build-arg VERSION=1.0 -t myapp:v1

# Dockerfile文件
ARG VERSION RUN echo $VERSION

--no-cache
  • 禁止使用缓存的中间层,这意味着每次构建时都会重新执行每个构建步骤。
  • 这对确保镜像是完全最新的很有帮助,特别是在需要更新依赖时。
docker build --no-cache -t myapp:latest

--pull
  • 强制每次构建时都从 Docker Hub 拉取最新的基础镜像,而不是使用本地缓存的镜像。
docker build --pull -t myapp:latest

-q --quiet
  • 让 docker build 在构建时只输出镜像的 ID,而不会显示详细的构建日志。
docker build -q -t myapp:latest

--target 用于指定多阶段构建中的构建目标阶段(Stage)。这在使用多阶段构建时非常有用
docker build --target build_stage -t myapp:build 

--rm 默认情况下,Docker 在构建完成后会删除中间容器。如果不想删除中间容器,可以通过 --rm=false 来保持它们
docker build --rm=false -t myapp:latest

--squash 这个选项在 Docker 1.13 后提供,允许合并镜像的多个层(Layer)为一个单一的层,以减少最终镜像的大小
docker build --squash -t myapp:latest

--no-cache 不使用缓存来构建镜像。每个步骤都会被强制执行,即使之前已成功完成
docker build --no-cache -t myapp:latest

-o 用于设置构建的输出位置,输出格式可以是 type=docker 或 type=tar。例如,可以将构建的内容保存为 tar 文件
docker build -o type=tar,dest=output.tar

-c 用于设定构建的并行程度。通常用于通过并行处理来加速构建过程
docker build -c 4 -t myapp:latest

1.3 系统管理命令 

1.3.1 docker info:显示Docker系统信息

1.3.2 docker version:查看Docker版本信息

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐