当前位置: 首页 > news >正文

04.Docker 镜像命令

Docker 镜像管理命令

  • Docker 镜像管理命令
    • 1. 搜索镜像
    • 2.镜像加速配置和优化
    • 3. 下载镜像
    • 4. 查看本地镜像
    • 5. 镜像导出
    • 4.镜像导入
    • 5. 删除镜像
    • 6. 镜像打标签

Docker 镜像管理命令

镜像即创建容器的模版,含有启动容器所需要的文件系统及所需要的内容,因此镜像主要用于方便和快速的创建并启动容器。

镜像里面是一层层的文件系统,叫做 Union FS(联合文件系统),联合文件系统,可以将几层目录挂载到一起(就像千层饼,洋葱头,俄罗斯套娃一样),形成一个虚拟文件系统,虚拟文件系统的目录结构就 像普通 linux 的目录结构一样,镜像通过这些文件再加上宿主机的内核共同提供了一个 linux 的虚拟环 境,每一层文件系统叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读 (readonly)、读写(readwrite)和写出(whiteout-able),但是镜像中每一层文件系统都是只读的, 构建镜像的时候,从一个最基本的操作系统开始,每个构建提交的操作都相当于做一层的修改,增加了 一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层 把底层遮住了一样,当使用镜像的时候,我们只会看到一个完全的整体,不知道里面有几层,实际上也不需要知道里面有几层。

镜像直接调用宿主机的内核,镜像中只提供 rootfs,也就是只需要包括最基本的命令,配置文件和程序库等相关文件就可以了。

1. 搜索镜像

官方网站进行镜像的搜索:https://hub.docker.com/

2.镜像加速配置和优化

从国内下载官方的镜像站点有时候会很慢,因此可以更改 docker 配置文件添加一个加速器,可以通过加速器达到加速下载镜像的目的。

# docker 镜像加速配置
[root@Ubuntu2204 ~]#vim /etc/docker/daemon.json 

{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.m.daocloud.io"
        ]
}

[root@Ubuntu2204 ~]#systemctl daemon-reload 

[root@Ubuntu2204 ~]#systemctl restart docker

3. 下载镜像

# 从 docker 仓库将镜像下载到本地,命令格式如下:
[root@Ubuntu2204 ~]#docker pull --help

用法: docker pull [选项] 名称[:标签|@摘要]
	 docker pull [OPTIONS] NAME[:TAG|@DIGEST]

选项:
  -a, --all-tags                下载存储库中的所有带标签的镜像
      --disable-content-trust   跳过镜像验证(默认为 true)
      --platform string         如果服务器支持多平台,设置平台
  -q, --quiet                   抑制详细输出

NAME: 是镜像名,一般的形式 仓库服务器:端口/项目名称/镜像名称
:TAG: 即版本号,如果不指定:TAG,则下载最新版镜像

# 拉取alpine镜像
[root@Ubuntu2204 ~]#docker pull alpine:latest

# 查看镜像分层历史
[root@Ubuntu2204 ~]#docker image history alpine:latest

# 查看镜像详细信息
[root@Ubuntu2204 ~]#docker inspect alpine:latest


# 镜像下载保存的路径:
/var/lib/docker/overlay2/镜像ID

4. 查看本地镜像

# docker images 可以查看下载至本地的镜像
[root@Ubuntu2204 ~]#docker images --help

用法: docker images [选项] [仓库[:标签]]
	 docker images [OPTIONS] [REPOSITORY[:TAG]]

列出镜像

选项:
  -a, --all             显示所有镜像(默认情况下隐藏中间镜像)
      --digests         显示摘要信息
  -f, --filter 过滤器    根据提供的条件过滤输出
      --format 字符串    使用 Go 模板格式化镜像输出
      --no-trunc        不截断输出
  -q, --quiet           仅显示镜像 ID

# 执行结果的显示信息说明: 
REPOSITORY      #镜像所属的仓库名称
TAG         	#镜像版本号(标识符),默认为latest
IMAGE ID       	#镜像唯一ID标识,如果ID相同,说明是同一个镜像有多个名称
CREATED       	#镜像在仓库中被创建时间
VIRTUAL SIZE    #镜像的大小


[root@Ubuntu2204 ~]#docker images

[root@Ubuntu2204 ~]#docker image ls

5. 镜像导出

利用 docker save 命令可以将从本地镜像导出为一个打包 tar 文件,然后复制到其他服务器进行导入使用。

[root@Ubuntu2204 ~]#docker save --help

用法: docker save [选项] 镜像 [镜像...]
	 docker save [OPTIONS] IMAGE [IMAGE...]

将一个或多个镜像保存到 tar 归档文件(默认情况下流式传输到 STDOUT)

选项:
  -o, --output 字符串   写入到文件,而不是标准输出(STDOUT)

#说明:
Docker save 使用IMAGE ID导出,在导入后的镜像没有REPOSITORY和TAG,显示为<none>

docker save -o /path/file.tar IMAGE1 IMAGE2 ...
docker save IMAGE1 IMAGE2 ... > /path/file.tar

[root@Ubuntu2204 ~]#docker save hello-world:latest alpine:latest -o images.tar

[root@Ubuntu2204 ~]#docker save hello-world:latest alpine:latest -o images2.tar

# 导出所有镜像到一个打包文件
# 使用image ID导出镜像,在导入后的镜像没有REPOSITORY和TAG,显示为<none>
[root@Ubuntu2204 ~]#docker save $(docker images -qa) -o all-images.tar

[root@Ubuntu2204 ~]#docker save $(docker images | awk 'NR>1 {print $1":"$2}') -o all-images2.tar

[root@Ubuntu2204 ~]#docker save $(docker image ls --format "{{.Repository}}:{{.Tag}}") -o all-images3.tar

[root@Ubuntu2204 ~]#scp images.tar images2.tar 10.0.0.110:

4.镜像导入

利用 docker load 命令可以将镜像导出的打包或压缩文件再导入。

[root@Ubuntu2204 ~]#docker load --help

用法: docker load [选项]
	 docker load [OPTIONS]tar 归档文件或标准输入(STDIN)加载镜像

选项:
  -i, --input 字符串   从 tar 归档文件读取,而不是标准输入(STDIN)
  -q, --quiet          抑制加载过程的输出

[root@Ubuntu2204 ~]#docker load < images.tar

[root@Ubuntu2204 ~]#docker load -i all-images2.tar

5. 删除镜像

[root@Ubuntu2204 ~]#docker rmi --help 

用法: docker rmi [选项] 镜像 [镜像...]
	 docker rmi [OPTIONS] IMAGE [IMAGE...]

删除一个或多个镜像

选项:
  -f, --force      强制删除镜像
      --no-prune   不删除未标记的父镜像
      
[root@Ubuntu2204 ~]#docker rmi 74cc54e27dc4

# 强制删除正在使用的镜像,也会删除对应的容器
[root@Ubuntu2204 ~]#docker rmi -f alpine:latest

# 删除所有镜像
[root@Ubuntu2204 ~]#docker rmi -f `docker images -qa`

6. 镜像打标签

docker tag 可以给镜像打标签,类似于起别名,但通常要遵守一定的命名规范,才可以上传到指定的仓库。

[root@Ubuntu2204 ~]#docker tag --help

用法: docker tag 源镜像[:标签] 目标镜像[:标签]
	 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

创建一个指向源镜像的标签目标镜像


#TARGET_IMAGE[:TAG]格式一般形式
仓库主机FQDN或IP[:端口]/项目名(或用户名)/image名字:版本

[root@Ubuntu2204 ~]#docker tag hello-world:latest hello-world:0.0.1

相关文章:

  • 【JavaEE进阶】MyBatis入门
  • 房产销售|基于Springboot+vue的房产销售系统平台(源码+数据库+文档)
  • 向量数据库1:向量数据库的选型
  • table表格实现多行合并效果实现
  • Java 集合数据处理技巧:使用 Stream API 实现多种操作
  • 八大经典排序算法
  • LeetCode:2595.奇偶位数
  • 云原生DevOps:Zadig架构设计与企业实践分析
  • 七星棋牌源码高阶技术指南:6端互通、200+子游戏玩法深度剖析与企业级搭建实战(完全开源)
  • 适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究
  • Windows网络安全基础
  • 向 OpenAI ChatGPT 提问如何学习黑客
  • 硬盘识别不出来了怎么办?硬盘读不出来的解决方法
  • 基于Flask的租房信息可视化系统的设计与实现
  • 【项目实践06】【Retrofit2 框架的使用】
  • Linux-C/C++《C++/1、C++基础》(C++语言特性、面向对象等)
  • 【人工智能】用Python迈向轻量化深度学习——模型压缩与量化实战指南
  • 植物大战僵尸杂交版v3.2.1最新版本(附下载链接)
  • java简单实现请求deepseek
  • MySQL多列索引查询优化
  • 合肥做个网站多少钱/哈尔滨seo关键词排名
  • 2020年网站建设笔记本/福州seo外包公司
  • 不错的免费网站建设/韩国比分预测
  • 免费软件是怎么盈利的/武汉seo服务
  • 如何做一个免费的网站/seo排名技巧
  • 长春电商网站建设报价/游戏推广员如何推广引流