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

Docker学习——Dock镜像

什么是Docker镜像

Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。

  • 一个镜像可以包含一个基本的操作系统环境,里面仅安装了 Apache 应用程序(或 用户需要的其他软件) 可以把它称为一个 Apache 镜像。
  • 镜像是创建 Docker 容器的基础。
  • 通过版本管理和增量的文件系统, Docker 提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。
Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默
认镜像仓库下载(默认使用 Docker Hub 公共注册服务器中的仓库), 用户也可以通过配置,
使用自定义的镜像仓库。

获取镜像

镜像是运行容器的前提, 官方的 Docker Hub 网站已经提供了数十万个镜像供大家开放 下载。
命令:
可以使用 docker [image] pull 命令直接从 Docker Hub 镜像源来下载镜像。 该命 令的格式为 docker [image] pull NAME [ :TAG]
其中, NAME 是镜像仓库名称(用来区分镜像), TAG 是镜像的标签(往往用来表示版本
信息) 。 通常情况下, 描述 个镜像需要包括 名称+标签 信息。

 例如, 获取一个 Ubuntu 18.04 系统的基础镜像可以使用如下的命令:

[root@openEuler-node1 ~]# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
7c457f213c76: Pull complete 
Digest: sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98
Status: Downloaded newer image for ubuntu:18.04

如果没有写 名称+标签“ 信息中的标签,会默认添加一个latest标签,表示这个仓库中最新的镜像

[root@openEuler-node1 ~]# docker pull ubuntu
Using default tag: latest #自动添加的一个标签,获取最新的版本
latest: Pulling from library/ubuntu
bccd10f490ab: Pull complete 
Digest: sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e
Status: Downloaded newer image for ubuntu:latest
如果从非官方 的仓库 下载,则 需要在仓库 名称前指定完整的仓库地址。例如从网易蜂巢
的镜像源来下载ubun七u:18.04镜像,可以使用如下命令,此时下载的镜像名称 为pull hub.c.163.com/public/centos:6.5
[root@openEuler-node1 ~]# docker pull  hub.c.163.com/public/centos:6.5
6.5: Pulling from public/centos
96057de2d572: Pull complete 
a3ed95caeb02: Pull complete 
8a1dcc3f76c2: Pull complete 
8fe56c90e86a: Pull complete 
43fc3558431f: Pull complete 
5881bc109689: Pull complete 
Digest: sha256:92fd18cda0cbf63bb4b5ffd0c073a9d689d5b202e3b491cbc74488fff1c37d11
Status: Downloaded newer image for hub.c.163.com/public/centos:6.5
pull 子命令支持的 选项主要包括:
-a, --all--ags=true|false: 是否获取仓库中的所有镜像,默认为否

查看镜像

images命令列出镜像

使用docker images或docker image ls 命令可以列出本地主机上已有镜像的基
本信息。

  •  REPOSITORY:来自于哪个仓库
  • TAG:镜像的标签信息
  • IMAGE ID:镜像的ID(唯一标识镜像)

 images子命令主要支持如下选项:

-a, --all rue I false: 列出所有(包括临时文件)镜像文件,默认为否;
-f, --fi让er=[] : 过滤列出的镜像, 如dangling rue 只显示没有被使用的
镜像;也可指定带有特定标注的镜像等;
使用tag命令添加镜像标签
 docker tag ubuntu:latest myubuntu:latest
这些myubuntu:latest镜像的ID跟ubunt:latest是 完全一 致的,它们实际上指向了同一个镜像文件,只是别名不同而巳。docker tag命令添加的标签实际上起到了类似链接的作用。

 使用inspect命令查看详细信息

[root@openEuler-node1 ~]# docker inspect ubuntu:18.04 
上面代码返回的是 JSON 格式的消息,如果我们只要其中 项内容时,可以使
-f 来指定,例如,获取镜像的 Arch让ect ure
[root@openEuler-node1 ~]# docker inspect -f {{".Architecture"}} ubuntu:18.04
amd64

搜索镜像

Docker 镜像的 search 子命令
-f, --filer fill er: 过滤输出内容;
--format st ring: 格式化输出内容;
--limit   int :限制输出结果个数, 默认为 25 个;
--no-trunc: 不截断输出结果。
[root@openEuler-node1 ~]# docker search busybox
NAME                                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
busybox                             Busybox base image.                             3223                [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]
s390x/busybox                       Busybox base image.                             3  
.....    
可以看到返回了很多包含关键字的镜像, 其中包括镜像名字、 描述、 收藏数(表示该镜像
的受欢迎程度)、 是否官方创建、 是否自动创建等。默认的输出结果将按照星级评价进行排序。

 

 删除和清理镜像

删除就rm  -f参数是强制删除,可以基于ID或者标签删除

docker rmi busybox:latest
使用Docker 段时间后, 系统中可能会遗留一些临时的镜像文件, 以及 些没有被使
用的镜像, 可以通过docker image prune命令来进行清理。
  • -a, -all: 删除所有无用镜像, 不光是临时镜像;
  • -filter filter: 只清理符合给定过滤器的镜像;
  • -f, -force: 强制删除镜像, 而不进行提示确认。

创建镜像

1基于已有容器创建

该方法主要是使用 docker [container] commit 命令

演示:

首先, 启动一个镜像, 并在其中进行修改操作。 例如, 创建一个test文件, 之后退出, 代码如下:

[root@openEuler-node1 ~]# docker run -it ubuntu:18.04 bash
root@35b863d7caf6:/# touch test
root@35b863d7caf6:/# exit

此时容器与原镜像就不一致了,可以用commit来提交一个新的镜像

[root@openEuler-node1 ~]# docker commit -m "Add a new file" -a "FYS" 35b863d7caf6 test:0.1
sha256:e2c7a68ee5c90d3ae55b095ca7dc8ee4a9ca1a54e9722d6ef4b98c68d1c5e4cf
此时查看本地镜像列表, 会发现新创建的镜像已经存在了:
[root@openEuler-node1 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                0.1                 e2c7a68ee5c9        23 seconds ago      63.2MB

2基于本地模板导入

例如,下载了 ubuntu-18.04 的模板压缩包,之后使用以下命令导人即可:
[root@openEuler-node1 ~]# cat ubuntu-18.04-x86_64-minimal.tar.gz I docker import - ubuntu:lB.04

3基于Dockefile创建

下面给出 Dockerfile 的一个简单示例,基于 debian:stretch-slim 镜像安装 Python 3
环境,构成一个新的 python:3 镜像:
[root@openEuler-node1 ~]# vim dockerfile
FROM debian:stretch-slim
LABEL version="1.0" maintainer "docker user <docker user@github>"
RUN apt-get update && \apt-get install-y python3 && \ apt-get clean && \rm rf /var/lib/apt/lists/*
[root@openEuler-node1 ~]# docker build -t python:3 .

FROM:   基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER: 镜像维护者的姓名和邮箱地址
RUN:    容器构建时需要运行的命令,如果在容器运行时需要运行其他命令,使用run指定
EXPOSE: 容器对外暴露的端口,mysql:3306、redis:6379
WORKDIR:创建容器后,进入容器使用pwd指令落脚点的目录,没有指定就是/,如centos是/,redis是/data
ENV:    用来构建镜像的过程中设置环境变量,"ENV 键 值"。 相当于成员变量
         如:ENV MY_PATH /usr/mytest    这个环境变量可以在后续的任何RUN指令中使用;也可以在其它指令中直接使用这些环境变量,      
ADD:    将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。 ADD = COPY+解压缩
COPY:   类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置       
VOLUME: 容器数据卷,用来数据保存和持久化工作
CMD:    指定一个容器启动时需要运行的命令。DockerFile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
         也就是人工添加或文件中指定的CMD参数会把DockerFile里面的参数覆盖,只会有最后一个生效。

.其中 使用 -f 命令可以指定dockerfile的路径。
 

存出和载入镜像

1存出镜像

可以使用 docker [image] save 命令 该命令支持 -o output string 参数 导出镜像到指定的文件中

 

[root@openEuler-node1 ~]# docker save -o ubuntu_18.04.tar ubuntu:18.04 
[root@openEuler-node1 ~]# ll
总用量 64012
-rw-------. 1 root root      974  2月 19 16:15 anaconda-ks.cfg
-rw-r--r--  1 root root      205  3月 11 16:47 dockerfile
-rw-------  1 root root 65539072  3月 11 16:54 ubuntu_18.04.tar

 2载入镜像

可以使用 docker [image] load 将导出的 tar 文件再导人到本 镜像库。-i  input string 选项,从指定文件中读入镜像内容,与存出相反
[root@openEuler-node1 ~]# docker load < ubuntu_18.04.tar 
[root@openEuler-node1 ~]# docker load -i ubuntu_18.04.tar 

 上传镜像

可以使用 docker [image] push 命令上 传镜像到仓库,默认上传到 Dock er Hub 官方仓库(需要登录)
命令格式为 docker [image] push [:TAG] I [REGISTRY_HOST [ :REGISTRY_PORT] / ]NAME [:TAG:]
[root@openEuler-node1 ~]# docker push user/test:latest
第一次上传时,会提示输入登录信息或进行注册,之后登录信息会记录到本 地~ docker
目录下

相关文章:

Docker学习——Dock镜像

什么是Docker镜像 Docker 镜像类似于虚拟机镜像&#xff0c;可以将它理解为一个只读的模板。 一个镜像可以包含一个基本的操作系统环境&#xff0c;里面仅安装了 Apache 应用程序&#xff08;或 用户需要的其他软件&#xff09; 可以把它称为一个 Apache 镜像。镜像是创建 Do…...

CorelDRAW Graphics Suite2024专业图形设计软件Windows/Mac最新25.0.0.230版

CorelDRAW Graphics Suite 2024是一款专业的图形设计软件&#xff0c;它集成了CorelDRAW Standard 2024和其他高级图形处理工具&#xff0c;为用户提供了全面的图形设计和编辑解决方案。 该软件拥有强大的矢量编辑功能&#xff0c;用户可以轻松创建和编辑矢量图形&#xff0c;…...

el-form表单中,对非表单内字段增加校验的方法

1、问题说明&#xff1a; 在开发表单的时候&#xff0c;可能会遇到el-form-item中绑定的值不在表单绑定的数据对象中。 此时用prop绑定该字段名是无效的&#xff0c;需要单独对这个字段进行校验。 在el-form-item中有一个属性 error 。用于表单域验证错误信息&#xff0c;设…...

【VTKExamples::Points】第四期 ExtractEnclosedPoints

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ExtractEnclosedPoints,并解析接口vtkExtractEnclosedPoints,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我…...

bug--xxoobject has no attribute xxx

Python 创建类的实例后却不能调用写的方法&#xff0c;检查了半天原来是缩进的问题&#xff0c;def函数不应该和class并列 只能说这个英文空格太小了&#xff0c;看不出来。。。。...

7 BUILD.gn文件怎么写,Gn + Ninja编译一个Hello world程序的例子Demo

BUILD.gn文件怎么写&#xff0c;Gn Ninja编译一个Hello world程序的例子Demo 作者将狼才鲸创建日期2024-03-11 Ninja安装流程见&#xff1a;一个能直接运行的Ninja例子&#xff0c;build.ninja文件怎么写&#xff1f;Gn安装流程见&#xff1a;Ubuntu18.04下安装Gn软件 这是一…...

北京市行政村边界shp数据/北京市乡镇边界/北京市土地利用分类数据

北京是一座有着三千多年历史的古都&#xff0c;在不同的朝代有着不同的称谓&#xff0c;大致算起来有二十多个别称。北京地势西北高、东南低。西部、北部和东北部三面环山&#xff0c;东南部是一片缓缓向渤海倾斜的平原。境内流经的主要河流有&#xff1a;永定河、潮白河、北运…...

力扣--动态规划/深度优先算法/回溯算法93.复原IP地址

这题主要用了动态规划和回溯算法。 动态规划数组初始化&#xff08;DP数组&#xff09;: 首先&#xff0c;创建一个二维数组dp&#xff0c;用于记录字符串中哪些部分是合法的IP地址。对字符串进行遍历&#xff0c;同时考虑每个可能的IP地址部分&#xff08;每部分由1到3个字符组…...

第一次Python小练习题目

1.打印某学校的校训&#xff0c;具体内容如下所示&#xff1a; ****************************** 勤奋 严谨 求实 创新 ****************************** 注意: 第一行和最后一行各有 30 个*号。 答案&#xff1a; school_strs "勤奋 严谨 求实 创新&q…...

[BUG] docker运行Java程序时配置代理-Dhttp.proxyHost后启动报错

[BUG] docker运行Java程序时配置代理-Dhttp.proxyHost后启动报错 bug现象描述 版本&#xff1a;2.0.4&#xff08;客户端和服务端都是&#xff09; 环境&#xff1a;私有云环境&#xff0c;只有少量跳板机器可以访问公网&#xff0c;其他机器均通过配置代理方式访问公网 bug现…...

Python网站的搭建和html基础

1.Python网站代码及讲解 一般我们搭建小型的网站就用flask库就行了。 &#xff08;1&#xff09;安装flask库 安装完python后&#xff0c;按住windows徽标键和r,弹出“运行”&#xff0c;在里面输入cmd。 回车打开&#xff0c;输入“pip install flask”。 &#xff08;2&am…...

SpringCloud(21)之SpringCloud Alibaba Nacos实战应用

一、Nacos安装 1.1 Nacos概述 Nacos是Alibaba微服务生态组件中的重要组件之一&#xff0c;主要用它实现应用的动态服务发现、配置管理、 服务管理。Nacos discovery alibaba/spring-cloud-alibaba Wiki GitHub Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简…...

Python 基础语法:基本数据类型(元组)

1 元组&#xff08;Tuples&#xff09;概述 1.1 元组的定义与特点 元组&#xff08;Tuples&#xff09;是Python中的一个内置数据类型&#xff0c;用于存储一系列有序的元素。元组中的元素可以是任何类型&#xff0c;包括数字、字符串、列表等&#xff0c;且元素之间用逗号…...

vuepress-theme-vdoing博客搭建教程

搭建流程 前言 这是笔者搭建个人博客所经历的流程&#xff0c;特附上笔记 笔者个人博客地址&#xff1a;沉梦听雨的编程指南 一、主题介绍 本博客使用的主题为&#xff1a;vuepress-theme-vdoing&#xff0c;相关介绍和使用方法可以参考该主题的官方文档 官方文档快速上手…...

ICC2:create terminal参考脚本

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 set list "" set i 0 ; set length xx set width xx foreach port $list { if {$i &#xff1d;&#xff1d; 0} { set startx 0 set starty 0 } else { set sta…...

并行计算CUDA DEMO

//并行计算CUDA DEMO #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <stdio.h> cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size); __global__ void addKernel(int *c, const int …...

【linux线程(一)】什么是线程?怎样操作线程?

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux线程 1. 前言2. 什么是线…...

python-0002-linux安装pycharm

下载软件包 下载地址&#xff1a;https://download.csdn.net/download/qq_41833259/88944791 安装 # 解压 tar -zxvf 你的软件包 # 进入软件解压后的路径&#xff0c;如解压到了/home/soft/pycharm cd /home/soft/pycharm cd bin # 执行启动命令 sh pycharm.sh # 等待软件启…...

扭蛋机小程序,扭蛋与互联网结合下的商机

扭蛋机作为一种娱乐消费模式&#xff0c;受众群体不再局限于儿童&#xff0c;也吸引了众多的年轻消费者。扭蛋机具有较大的随机性&#xff0c;玩具商品随机掉落&#xff0c;在购买前消费者完全不知道扭蛋中的商品是什么&#xff0c;这种未知性带来的惊喜感是吸引众多消费者的主…...

pytorch CV入门3-预训练模型与迁移学习

专栏链接&#xff1a;https://blog.csdn.net/qq_33345365/category_12578430.html 初次编辑&#xff1a;2024/3/7&#xff1b;最后编辑&#xff1a;2024/3/8 参考网站-微软教程&#xff1a;https://learn.microsoft.com/en-us/training/modules/intro-computer-vision-pytorc…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...