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
相关推荐
time never ceases27 分钟前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
YCyjs44 分钟前
K8S群集调度二
云原生·容器·kubernetes
Hoxy.R1 小时前
K8s小白入门
云原生·容器·kubernetes
MonkeyKing_sunyuhua2 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林3 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€4 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘4 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
全能全知者5 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器
阿尔帕兹7 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
ZHOU西口9 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac