Docker实战005:docker镜像使用详解
nanshan 2024-10-23 11:50 14 浏览 0 评论
Docker镜像是docker的核心成员,类似于虚拟机镜像的文件系统(一个镜像往往由多层文件系统组成,相当于一个精简的操作系统同时还包含应用运行所必须的文件和依赖包。),用来提供容器运行时所需的程序、库、资源、配置等资源。Docker镜像是基于Dockerfile文件构建的,Dockerfile文件内包含了一条条构建镜像所需的指令和说明。Docker build会读取定制的Dockerfile并通过Docker服务器创建镜像。Docker镜像是一个只读的模板,镜像内不包含任何动态数据即使构建之后也不会被改变。用户可以从 Docker Hub 获取已有镜像,也可以利用本地文件系统创建镜像。
获取镜像
镜像是Docker运行容器的前提,有了Docker镜像才可以创建Docker容器,一个镜像支持创建多个容器。Docker官方提供了一个公共仓库:https:/hub.docker.com并提供了数万个镜像供用户下载,基本可以满足大部分用户的镜像需求。Docker安装之后本地并没有镜像,镜像需要从远程镜像仓库服务中下载。docker提供了拉取命令:docker pull [options] <origin>/<repository>:<tag>,该命令表示从origin远程仓库(默认Docker Hub )中的repository仓库拉取标签为tag的镜像(如果省略标签则拉取标签为latest的镜像)。当然我们也可以从其他的注册中心拉取镜像,但是输入注册中心的URL时前面不需要加http://或https://。
查看docker镜像
docker镜像是一个文件系统(它没有状态也不会被改变),镜像可以启动复杂的软件供用户使用。 通过命令:docker images或者docker image ls可以列出本机已有的镜像,REPOSITORY资源仓库名,TAG指镜像的标签信息(即版本信息),IMAGE ID:是镜像的 ID(唯一的),CREATED:指镜像最后的更新时间,SIZE:指镜像的大小。如果还想更精确地查看docker镜像可以添加filter进行过滤,过滤属性有dangling、before、since、lable、reference。如果需要查看docker镜像的详细信息可以使用命令:docker inspect ubuntu:12.04 实现,查看镜像历史可以通过命令:docker history ubuntu:12.04实现。
搜索docker镜像
当我们下载镜像时通常需要先知道仓库是否存在该镜像,特别是指定标签下载时我们需要先查看下该镜像有哪些版本。此时我们可以通过docker提供的search命令来查询Docker Hub官方仓库中的镜像,命令格式为:docker search [options] keyword。输出内容包括镜像名称、镜像描述、收藏数、是否官方创建、是否自动创建等信息,默认输出的结果按收藏数进行排序。
删除docker镜像
删除之前要确认此镜像是否被容器使用,如果存在正在运行的docker容器则需要先删除对应的docker容器。因为该镜像被容器引用,所以会导致镜像删除失败。或者当同一个镜像拥有多个标签时,执行删除命令时只是删除了该镜像指定的标签并不会影响原始的那个镜像文件。我们先通过命令先删除引用这个镜像的容器:docker rm containerId(containerId 是容器的ID,可以通过docker ps -a来查看到包括未运行的所有容器id),然后再来执行删除镜像的命令:docker rmi imageId/repository(imageId 是镜像的ID,可以通过docker images来查看所有镜像id)。
清理docker镜像
Docker使用一段时间后系统会残存一些临时的或者未被使用的镜像文件(比如部署升级),随着时间的推移主机中的镜像文件会越来越多。但是其中有很多临时的、未被使用的镜像会占用了大量的存储空间,此时就需要定期清理没有价值的镜像以保证系统的良好运行。通常主机中有使用中的镜像、历史版本镜像、基础镜像和dangling镜像,其中dangling镜像和历史版本镜像是不需要的镜像文件,会占用了一定的存储空间需要及时清理。dangling镜像是由于同一个tag多次构建内容不同的镜像时由docker build 或 docker pull 命令生成的,该镜像不具有名称也没有作用,一般在docker iamges查看镜像中显示<none>:<none>。docker提供了专门清理dangling镜像的命令:docker image prune [options],想要清除所有没有容器引用的镜像增加一个参数 -a,想要强制删除则添加参数-f。
总结:
运行容器时如果使用的镜像本地不存在会自动从官方Docker Hub 镜像源仓库中下载,我们也可以自己制作镜像供他人下载。以上内容是小编给大家分享的【Docker实战005:docker镜像使用详解】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
为了方便学习,下面附上本文用到的源码:
// 从注册服务器registry.hub.docker.com中的ubuntu仓库下载标记为 12.04 的镜像。
$ docker pull registry.hub.docker.com/ubuntu:12.04
Options:
# -a 拉取所有不同标签的镜像(可选参数)
-a, --all-tags Download all tagged images in the repository
# 忽略镜像校验,默认项
--disable-content-trust Skip image verification (default true)
---------------------------------------------------------------------------------
# docker pull ubuntu:12.04 //默认从docker.io/library/ubuntu:12.04下载
12.04: Pulling from library/ubuntu
d8868e50ac4c: Pull complete
83251ac64627: Pull complete
589bba2f1b36: Pull complete
d62ecaceda39: Pull complete
6d93b41cfc6b: Pull complete
Digest: sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005
Status: Downloaded newer image for ubuntu:12.04
docker.io/library/ubuntu:12.04
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 12.04 5b117edd0b76 3 years ago 104MB
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 12.04 5b117edd0b76 3 years ago 104MB
# docker image ls --filter [dangling|before|since|lable|reference]
------------------------------------------------------------------------
// dangling: 值为true时返回没有标签的镜像,值为false时返回有标签的镜像。
// before:需要镜像名或镜像ID作为参数,返回之前创建的全部镜像。
// since: 同样需要镜像名或镜像ID作为参数,返回之后创建的全部镜像。
// lable: 根据标注的名称或值过滤镜像。
// reference: 根据repository和tag搜索相关镜像
$ docker search ubuntu
Options:
-f, --filter 过滤输出的内容
--format string 格式化输出内容
--limit int 限制输出结果个数
--no-trunc 不截断输出结果
------------------------------------------------------
# docker search --limit 5 ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 11389 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 248 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 110 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 50 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components=m… 44 [OK]
# docker run ubuntu:12.04
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ec7b98eaf2e ubuntu:12.04 "/bin/bash"10 seconds ago Exited (0) 9 seconds ago pensive_elion
# docker rm 1ec7b98eaf2e
1ec7b98eaf2e
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 12.04 5b117edd0b76 3 years ago 104MB
# docker rmi ubuntu:12.04
Untagged: ubuntu:12.04
Untagged: ubuntu@sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005
Deleted: sha256:5b117edd0b767986092e9f721ba2364951b0a271f53f1f41aff9dd1861c2d4fe
Deleted: sha256:8c7f3d7534c80107e3a4155989c3be30b431624c61973d142822b12b0001ece8
Deleted: sha256:969d5a4e73ab4e4b89222136eeef2b09e711653b38266ef99d4e7a1f6ea984f4
Deleted: sha256:871522beabc173098da87018264cf3e63481628c5080bd728b90f268793d9840
Deleted: sha256:f13e8e542cae571644e2f4af25668fadfe094c0854176a725ebf4fdec7dae981
Deleted: sha256:58bcc73dcf4050a4955916a0dcb7e5f9c331bf547d31e22052f1b5fa16cf63f8
# docker image prune
options:
-a, --all 删除所有没有用的镜像,而不仅仅是临时文件
-f, --force 强制删除镜像文件,无需弹出提示确认
----------------------------------------------------
# docker image prune
WARNING! This will remove all dangling images. // 提示会删除所有dangling镜像!
Are you sure you want to continue? [y/N]
// 使用docker rmi结合命令,如果删除了<none>:<none> image会提示你释放了多少空间:
# docker rmi $(docker iamges -f dangling=true -q)
Total reclaimed space: 100MB
相关推荐
- Linux下C++访问web—使用libcurl库调用http接口发送解析json数据
-
一、背景这两天由于一些原因研究了研究如何在客户端C++代码中调用web服务端接口,需要访问url,并传入json数据,拿到返回值,并解析。 现在的情形是远程服务端的接口参数和返回类型都是json的字符...
- 干货 | 这 3 个超经典的Linux实战项目,让你分分钟入门Linux系统
-
编译安装nginx搭建小游戏网站编译安装流程下载nginx代码wget-P/server/tools/http:nginx.org/download/nginx1.22.0.tar.gz解压并进...
- 权限管理-树莓派linux⑦
-
前言当你在看这篇README,我感到非常荣幸。作为支持开源、分享的理念的我,给大家带来一些学习上的乐趣。由于本人并非专业的教育领域人士,很多时候天马行空,随心所欲的表达方式,可能让部分人感到不适。请根...
- 每天Linux学习:linux文件属性
-
ls-lih先通过这个命令来观察(-l列表显示目录内容详细,-i第一列显示inode,-h将文件大小显示为我们常见的kb,mb等单位)从截图中我们能看出文件属性由这9列信息组成:第1列:inod...
- Linux ln、unlink命令用法
-
ln命令可以用来创建软链接或硬链接。1.创建软链接:ln-s源文件目标文件例如:ln-s/usr/lib/libc.so/usr/local/lib/libc.so.6这样就创建了一...
- Linux 系统启动完整流程
-
一、启动系统流程简介如上图,简述系统启动的大概流程:1:硬件引导UEFi或BIOS初始化,运行POST开机自检2:grub2引导阶段系统固件会从MBR中读取启动加载器,然后将控制权交给启动加载器GRU...
- 最火的 CI/CD 平台 Jenkins 详细搭建教程(for Linux)
-
在正式学习Jenkins之前我们需要对两个名词有一定了解,其一是DevOps,另外一个就是CI/CD。何为DevOps?来自wiki百科介绍DevOps是一系列软件开发实践,强调开发人员(Dev)和测...
- hadoop集群搭建详细方法
-
第一步:搭建配置新的虚拟机格式化之前先把tmp目录下所有与Hadoop有关的信息全部删除rm-rf/tmp/hadoop-centos*开启之后jps只有Java的进程:sudovi/et...
- Linux 常用命令集合
-
系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...
- inode文件索引,你了解嘛?你的Linux基础真的扎实嘛?
-
一、inode是什么?深入了解inode,就要从文件存储说起来!文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节。读取硬盘的时候,不会一个个扇区地读取,这样效率...
- linux实例之创建service服务
-
前面我们讲过可以通过service命令来启动,重启,停止指定的服务程序。service服务可以在系统启动时,自动运行该服务,我们可以利用这一特点,创建service文件,并且让系统重启时,自动执行命令...
- linux之软连接和硬连接的区别
-
硬连接硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是允许的,像这样的链接就是硬链接。硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的...
- Linux inode 详解
-
简介索引节点(IndexNode)是Linux/类unix系统文件系统上的一种数据结构,用于存储有关文件或目录的元数据。它包含文件的所有信息,除了文件名和数据。inode在文件系统如何存储和检...
- Bash 脚本实例:获取符号链接的目标位置
-
我们都熟悉Linux中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。本文将介绍Linux中符号链接的基础知识,并创建一个简单的bash脚本...
- windows快捷方式,符号链接,软链接和硬链接
-
当一个软件大量的向C盘写入数据,而我们又无法修改软件保存数据的位置时,可以使用windows系统的“符号链接”(SymbolicLink)功能,将保存数据的位置修改到其它分区中。符号链接类似于我们熟...
你 发表评论:
欢迎- 一周热门
-
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WindowsServer2022|配置NTP服务器的命令
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)