Docker-Image

Docker

  • [Docker 镜像是什么](#Docker 镜像是什么)
  • 为什么需要镜像
  • 镜像命令
    • 总览
    • [docker images](#docker images)
    • [docker tag](#docker tag)
    • [docker pull](#docker pull)
    • [docker push](#docker push)
    • [docker rmi](#docker rmi)
    • [docker save](#docker save)
    • [docker load](#docker load)
    • [docker image inspect](#docker image inspect)
    • [docker history](#docker history)
    • [docker import](#docker import)
    • [docker image prune](#docker image prune)
    • [docker build](#docker build)

Docker 镜像是什么

  • Docker image 本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件

  • 我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器

  • image 里面是一层层文件系统(Union File System), 可以将几层目录挂载到一起, 形成一个虚拟文件系统. 每一层文件系统我们叫做一层 layer, 联合文件系统可以对每一层文件系统设置三种权限, 只读(readonly)、读写(readwrite)和写出(whiteout-able)

镜像相当于一个模板,可以很方便的构建出来不同的对象

🍂案例

为什么需要镜像

在部署应用时,通过手工或写一些脚本的方式进行部署。这样部署面临问题就是云端和本地环境一致问题。用户为每个应用打包过程比较繁琐,需要配置和修改等操作,非常费劲

然而,Docker 镜像就是为了解决这个小小的打包功能,突然一夜之间成名。那么,你可能说 Docker 镜像就是个压缩包,是的,你猜对了,它就像一个压缩包文件。它是如何解决 Paas 时代所面临的云端和本地一致性问题?很简单,它是把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样

Docker 最大的贡献就是定义了容器镜像的分层的存储格式,Docker 镜像技术的基础是联合文件系统(UnionFS),其文件系统是分层的。这样既可以充分利用共享层,又可以减少存储空间占用。Docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或与其他 Docker 用户公开共享

镜像命令

总览

command alias function
docker images docker image ls / docker image list 列出本地镜像
docker tag docker image tag 给镜像打标签, 可用于推送至镜像仓库
docker pull docker image pull 从镜像仓库拉取镜像
docker push docker image push 推送镜像到仓库
docker rmi docker image rm / docker image remove 删除本地镜像
docker build docker image build 通过 dockerfile 制作镜像
docker save docker image save 将指定镜像保存成 tar 归档文件
docker load docker image load 导入使用 docker save 命令导出的镜像
docker image inspect 查看镜像详细信息
docker history docker image history 查看镜像历史
docker import docker image import 从归档文件 docker export 中创建镜像
docker image prune 删除不使用的镜像

docker images

  • 功能

    列出本地镜像

  • 语法

    docker images [OPTIONS] [REPOSITORY[:TAG]]

  • 别名

    docker image ls, docker image list

  • 参数

    • -a: 列出本地所有的镜像(含中间映像层, 默认情况下, 过滤掉中间映像层)
    • --digests: 显示镜像的摘要信息
    • -f: 显示满足条件的镜像
    • --format: 指定返回值的模板文件
    • --no-trunc: 显示完整的镜像信息
    • -q: 只显示镜像 ID

🍂样例

shell 复制代码
# 列出本地全部镜像
docker images

# 列出本地镜像中 REPOSITORY 为 ubuntu 的镜像列表
docker images ubuntu

docker tag

  • 功能

    标记本地镜像, 将其归入某一仓库

  • 语法

    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

  • 别名

    docker image tag

🍂样例

shell 复制代码
# 给 ubuntu:22.04 镜像打标签
docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

docker pull

  • 功能

    从镜像仓库中拉取或者更新指定镜像

  • 语法

    docker pull [OPTIONS] NAME[:TAG|@DIGEST]

  • 别名

    docker image pull

  • 参数

    • -a: 拉取所有 tagged 镜像
    • --disable-content-trust: 忽略镜像的校验, 默认开启

🍂样例

shell 复制代码
# 拉取 nginx:1.23.3 镜像
docker pull nginx:1.23.3

docker push

  • 功能

    将本地的镜像上传到镜像仓库, 要先登录到镜像仓库

  • 语法

    docker push [OPTIONS] NAME[:TAG]

  • 别名

    docker image push

  • 参数

    • -a: 推送所有 tagged 镜像
    • --disable-content-trust: 忽略镜像的校验, 默认开启

🍂样例

shell 复制代码
# 推送 bibubibu/busybox:v1 镜像
docker push bibubibu/busybox:v1

docker rmi

  • 功能

    删除镜像

  • 语法

    docker rmi [OPTIONS] IMAGE [IMAGE...]

  • 别名

    docker image rm, docker image remove

  • 参数

    • -f: 强制删除
    • --no-prune: 不移除该镜像的过程镜像,默认移除

🍂样例

shell 复制代码
# 推送 bibubibu/busybox:v1 镜像
docker rmi nginx:stable

docker save

  • 功能

    将指定镜像保存成 tar 归档文件

  • 语法

    docker save [OPTIONS] IMAGE [IMAGE...]

  • 别名

    docker image save

  • 参数

    • -o: 输出到的文件

🍂样例

shell 复制代码
# 将 myimage:latest 镜像保存成了 myimage.tar 文件
docker save -o myimage.tar myimage:latest

docker load

  • 功能

    导入使用 docker save 命令导出的镜像

  • 语法

    docker load [OPTIONS]

  • 别名

    docker image load

  • 参数

    • --input, -i: 指定导入的文件, 代替 STDIN
    • --quiet, -q: 精简输出信息

🍂样例

shell 复制代码
# 将 myimage.tar 文件导入到本地镜像
docker load -i myimage.tar

docker image inspect

  • 功能

    查看镜像详细信息

  • 语法

    docker image inspect [OPTIONS] IMAGE [IMAGE...]

docker inspect 会自动检查是镜像还是容器然后显示相关信息

🍂样例

shell 复制代码
# 查看镜像详细信息
docker images inspect nginx:1.23.3

docker history

  • 功能

    显示镜像历史

  • 语法

    docker history [OPTIONS] IMAGE

  • 别名

    docker image history

  • 参数

    • -H , --human: 大小和日期采用人容易读的格式展现
    • --no-trunc: 显示全部信息, 不要隔断
    • -q, --quiet: 只显示镜像 id 信息

🍂样例

shell 复制代码
# 显示 nginx:1.25.3 镜像历史
docker history -H nginx:1.25.3

docker import

  • 功能

    从归档文件中创建镜像

  • 语法

    docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

  • 别名

    docker image import

  • 参数

    • -c: 应用 docker 指令创建镜像
    • -m: 提交时的说明文字

🍂样例

shell 复制代码
# 从 my_ubuntu_v3.tar 文件中创建了一个名为 bibubibu/ubuntu:v4 的镜像
docker import my_ubuntu_v3.tar bibubibu/ubuntu:v4

docker image prune

  • 功能

    删除不使用的镜像

  • 语法

    docker image prune [OPTIONS]

  • 参数

    • -a , --all: 删除全部不使用的镜像
    • --filter: 指定过滤条件
    • -f, --force: 不提示是否删除

🍂样例

shell 复制代码
# 删除所有没有被已有容器使用的镜像
docker image prune -a

docker build

  • 功能

    用于使用 Dockerfile 创建镜像

  • 语法

    docker build [OPTIONS] PATH | URL | -

  • 参数

    • --build-arg=[]: 设置镜像创建时的变量
    • -f: 指定要使用的 Dockerfile 路径
    • --label=[]: 设置镜像使用的元数据
    • --no-cache: 创建镜像的过程不使用缓存
    • --pull: 尝试去更新镜像的新版本
    • --quiet, -q: 安静模式, 成功后只输出镜像 ID
    • --rm: 设置镜像成功后删除中间容器
    • --tag, -t: 镜像的名字及标签, 通常为 name:tag 或者 name 格式; 可以在一次构建中为一个镜像设置多个标签
    • --network: 默认 default. 在构建期间设置 RUN 指令的网络模式

🍂样例

shell 复制代码
# 使用 Dockerfile 创建了一个名为 myimage:tag 的镜像
docker build -t myimage:tag
相关推荐
丶21362 分钟前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
codelife32115 分钟前
在Docker容器中执行命令
容器
petaexpress23 分钟前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes
m0_741768857 小时前
使用docker的小例子
运维·docker·容器
最新小梦10 小时前
Docker日志管理
运维·docker·容器
ZHOU西口11 小时前
微服务实战系列之玩转Docker(十五)
nginx·docker·微服务·云原生·swarm·docker swarm·dockerui
lgbisha12 小时前
828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
低代码·docker·华为云
记得开心一点嘛12 小时前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker
Persistence is gold14 小时前
cassandra指定配置文件的docker启动方法
运维·docker·容器
C语言扫地僧15 小时前
Docker 镜像制作(Dockerfile)
linux·服务器·docker·容器