Docker学习之镜像管理(超详解析)

2024-03-15 20:44

本文主要是介绍Docker学习之镜像管理(超详解析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Docker镜像生命周期(可以把docker镜像理解为虚拟机镜像)

实验内容:

搜索官方仓库镜像

[root@localhost ~]# docker search busybox //以查找busybox为例
搜索说明:name镜像名称   description镜像说明   stars点赞数量  official是否是官方的  automated是否是自动构建的
NAME                                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
busybox                             Busybox base image.                             3225                [OK]                
radial/busyboxplus                  Full-chain, Internet enabled, busybox made f…   56                                      [OK]
yauritux/busybox-curl               Busybox with CURL                               25                                      
arm32v7/busybox                     Busybox base image.                             10                                      
arm64v8/busybox                     Busybox base image.                             8                                       
odise/busybox-curl                                                                  4                                       [OK]
i386/busybox                        Busybox base image.                             3                                       
s390x/busybox                       Busybox base image.                             3                                       
prom/busybox                        Prometheus Busybox Docker base images           2                                       [OK]
p7ppc64/busybox                     Busybox base image for ppc64.                   2                                       
hugegraph/busybox                   test image                                      2                                       
joeshaw/busybox-nonroot             Busybox container with non-root user nobody     2                                       
busybox42/zimbra-docker-centos      A Zimbra Docker image, based in ZCS 8.8.9 an…   2                                       [OK]
openebs/busybox-client                                                              1                                       
amd64/busybox                       Busybox base image.                             1                                       
vukomir/busybox                     busybox and curl                                1                                       
ppc64le/busybox                     Busybox base image.                             1                                       
privatebin/chown                     Docker image providing busybox' chown, stat…   1                                       
antrea/busybox                                                                      1                                       
spotify/busybox                     Spotify fork of https://hub.docker.com/_/bus…   1                                       
busybox42/nginx_php-docker-centos   This is a nginx/php-fpm server running on Ce…   1                                       [OK]
busybox42/haraka-docker-centos      CentOS Haraka build with spamassassin, redis…   1                                       [OK]
busybox42/alpine-pod                                                                0                                       
rancher/busybox                                                                     0                                       
concourse/busyboxplus                                                               0   

拉取镜像

[root@localhost ~]# docker pull busybox //拉取busybox(不指定版本时,默认拉取最近版本)
Using default tag: latest
latest: Pulling from library/busybox
5cc84ad355aa: Pull complete 
Digest: sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Status: Downloaded newer image for busybox:latest
[root@localhost ~]# docker pull ubuntu:18.04  //拉取ubuntu(也可以指定版本拉取)
18.04: Pulling from library/ubuntu
284055322776: Pull complete 
Digest: sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79dbbacddd7d6
Status: Downloaded newer image for ubuntu:18.04
[root@localhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/kongd/openlab:ubuntu_18.04 //由于docker拉取时是基于docker hub有时国内站点访问时可能会速度较慢,所以可以指定拉取国内阿里等站点的,也可以自己构建docker镜像站进行拉取。这里不做过多赘述。
ubuntu_18.04: Pulling from kongd/openlab
Digest: sha256:fc0d6af5ab38dab33aa53643c4c4b312c6cd1f044c1a2229b2743b252b9689fc
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/kongd/openlab:ubuntu_18.04

查看镜像信息

查看当前主机列表
[root@localhost ~]# docker images(也可以使用docker image ls命令来查看)
REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
busybox                                           latest              beae173ccac6        2 years ago         1.24MB
ubuntu                                            18.04               5a214d77f5d7        2 years ago         63.1MB
registry.cn-hangzhou.aliyuncs.com/kongd/openlab   ubuntu_18.04        5a214d77f5d7        2 years ago         63.1MB
查看镜像详细信息
[root@localhost ~]# docker inspect busybox //在此以查看busybox镜像信息为例
[{"Id": "sha256:beae173ccac6ad749f76713cf4440fe3d21d1043fe616dfbe30775815d1d0f6a","RepoTags": ["busybox:latest"],"RepoDigests": ["busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678"],"Parent": "","Comment": "","Created": "2021-12-30T19:19:41.006954958Z","Loaded": "2024-03-13T16:37:54.485607571+08:00","Container": "a0007fa726185ffbcb68e90f8edabedd79a08949f32f4f0bcc6e5fed713a72c8","ContainerConfig": {"Hostname": "a0007fa72618","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image": "sha256:da658412c37aa24e561eb7e16c61bc82a9711340d8fb5cf1a8f39d8e96d7f723","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {},"Annotations": null},"DockerVersion": "20.10.7","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["sh"],"Image": "sha256:da658412c37aa24e561eb7e16c61bc82a9711340d8fb5cf1a8f39d8e96d7f723","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": null,"Annotations": null},"Architecture": "amd64","Os": "linux","Size": 1239820,"VirtualSize": 1239820,"GraphDriver": {"Data": {"MergedDir": "/var/lib/docker/overlay2/4beb70f0835dd66d616bd0ae25176d019236743fd00eec1bda704ec6872297b3/merged","UpperDir": "/var/lib/docker/overlay2/4beb70f0835dd66d616bd0ae25176d019236743fd00eec1bda704ec6872297b3/diff","WorkDir": "/var/lib/docker/overlay2/4beb70f0835dd66d616bd0ae25176d019236743fd00eec1bda704ec6872297b3/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:01fd6df81c8ec7dd24bbbd72342671f41813f992999a3471b9d9cbc44ad88374"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]

删除镜像

[root@localhost ~]# docker rmi ubuntu:18.04(也可用docker image rm ubuntu:18.04命令完成)如果删除时需要进行强制删除可以采用-f参数
Untagged: ubuntu:18.04
Untagged: ubuntu@sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79dbbacddd7d6
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              beae173ccac6        2 years ago         1.24MB
myubuntu            18.04               5a214d77f5d7        2 years ago         63.1MB

导出导入镜像

ip主机名
192.168.27.137导出
192.168.27.141导入
导出
[root@localhost ~]# docker save -o images.tar busybox:latest myubuntu:18.04
-o:指定导出镜像的位置;
可以同时导出多个镜像;为一个文件;
指定.tar.gz 可以导出并压缩。
[root@localhost ~]# scp images.tar 192.168.27.137:~
The authenticity of host '192.168.27.137 (192.168.27.137)' can't be established.
ED25519 key fingerprint is SHA256:wKCxBY5GtfgHv2MW283QFPMTGf6L4CqjVBroqsX6wso.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.27.137' (ED25519) to the list of known hosts.Authorized users only. All activities may be monitored and reported.
root@192.168.27.137's password: 
images.tar          100%   64MB 254.7MB/s   00:00  
导入
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@localhost ~]# ll
总用量 65420
-rw-------. 1 root root      706  1月 23 19:05 anaconda-ks.cfg
-rw-------  1 root root 66983424  3月 13 17:00 images.tar
[root@localhost ~]# docker load -i images.tar 
01fd6df81c8e: Loading layer  1.459MB/1.459MB
Loaded image: busybox:latest
824bf068fd3d: Loading layer  65.51MB/65.51MB
Loaded image: myubuntu:18.04
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              beae173ccac6        2 years ago         1.24MB
myubuntu            18.04               5a214d77f5d7        2 years ago         63.1MB

这篇关于Docker学习之镜像管理(超详解析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813211

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1