Docker镜像管理常用操作代码示例

镜像也是docker的核心组件之一,镜像时容器运行的基础,容器是镜像运行后的形态。总体来说,镜像是一个包含程序运行必要以来环境和代码的只读文件,它采用分层的文件系统,将每一层的改变以读写层的形式增加到原来的只读文件上。

镜像与容器的关系

前文已经向读者介绍过容器的使用了,细心的读者可能已经发现,容器在启动或者创建时,必须指定一个镜像的名称或者id,其实,这时镜像所扮演的角色就是容器的模版,不同的镜像可以构造出不同的容器。如下命令:

docker run -itd --name nginx nginx

命令中的最后一个nginx即表示创建该容器所需要的模板

镜像的体系结构

镜像的最底层是一个启动文件系统(bootfs)镜像,bootfs的上层镜像叫做根镜像,一般来说,根镜像是一个操作系统,例如Ubuntu、CentOS等,用户的镜像必须构建于根镜像之上,在根镜像之上,用户可以构建出各种各样的其他镜像。从上面的介绍读者可以看出,镜像的本质其实就是一系列文件的集合,一层套一层的结构有点类似于Git。

镜像的写时复制机制

通过docker run 命令指定一个容器创建镜像时,实际上是在该镜像上创建一个空的可读写的文件系统层级,可以将这个文件系统层级当成一个临时的镜像来对待,而命令中所指的模版镜像则可以称之为父镜像。父镜像的内容都是以只读的方式挂载进来的,容器会读取共享父镜像的内容,用户所做的所有修改都是在文件系统中,不会对父镜像造成任何影响。当然用户可以通过其他一些手段使修改持久化到父镜像中,这个我们后面会详细介绍到。

查看

docker images

用户可以通过docker images命令查看本地所有镜像

这里一共有五个参数:

1.REPOSITORY

仓库名称,仓库一般用来存放同一类型的镜像,仓库的名称由其创建者指定。如果没有指定则为。一般来说,仓库名称有如下几种不同的形式。

  • [namespace\ubuntu]:这种仓库名称由命名空间和实际的仓库名组成,中间通过\隔开。当开发者在Docker Hub上创建一个用户时,用户名就是默认的命名空间,这个命令空间是用来区分Docker Hub上注册的不同用户或者组织(类似于GitHub上用户名的作用),如果读者想将自己的镜像上传到DockerHub上供别人使用,则必须指定命名空间。
  • [ubuntu]:这种只有仓库名,对于这种没有命名空间的仓库名,可以认为其属于顶级命名空间,该空间的仓库只用于官方的镜像,由Docker官方进行管理,但一般会授权给第三方进行开发维护。当然用户自己创建的镜像也可以使用这种命名方式,但是将无法上传到Docker Hub上共享。
  • [hub.c.163.com/library/nginx]:这种指定url路径的方式,一般用于非Docker Hub上的镜像命名,例如一个第三方服务商提供的镜像或者开发者自己搭建的镜像中心,都可以使用这种命名方式命名。

2.TAG 用于区分同一仓库的不同镜像,默认为latest

3.IMAGE ID 是镜像的一个唯一标识符

4.CREATED 镜像的创建时间

5.SIZE 表示镜像大小

使用docker images命令可以查看本地所有的镜像,如果镜像过多,可以通过通配符进行匹配,如下:

如果需要查看镜像的详细信息,也可以通过上文提到的docker inspect 命令来查看下载

当用户执行docker run命令时,就会自动去Docker Hub上下载相关的镜像,这个就不再重复演示,开发者也可以通过search命令去Docker Hub上搜索符合要求的镜像,如下:

其中:

  • NAME:表示镜像的名称
  • DESCRIPTION:表示镜像的简要描述
  • STARS:表示用户对镜像的评分,评分越高越可以放心使用。
  • OFFICIAL:是否为官方镜像
  • AUTOMATED: 是否使用了自动构建

在执行docker run命令再去下载,速度会有点慢,如果希望该命令能够快速执行,可以在执行之前,先利用docker pull命令将镜像先下载下来,然后在运行。

运行命令如下:

删除

镜像可以通过docker rmi命令进行删除,参数为镜像的id或者镜像名,参数可以有多个,多个参数之间空格隔开,如下:

有的时候,无法删除一个镜像,大部分原因是因为该镜像被一个容器所依赖,此时需要先删除容器,然后就可以删除镜像了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • spring boot项目生成docker镜像并完成容器部署的方法步骤

    一.问题产生    把spring boot项目生成的jar打成docker镜像并生成docker容器完成部署是比较简单方便的部署方式,而且部署过程很少会出错. 二.部署步骤 1.利用maven或者gradle完成打包工作,打成jar包的形式. 2.在项目中的任意位置创建Dockerfile文件,本人的文件如下: FROM java:8 VOLUME /tmp ADD front-1.0-SNAPSHOT.jar front.jar RUN bash -c 'touch /front.jar'

  • 最简单的spring boot打包docker镜像的实现

    这个spring boot项目只在网页输出一个hello world文本,没有其他复杂的配置和页面,属于入门级,可以放心食用. 本项目通过maven打包,打包和构建镜像的命令为: mvn clean install package docker:build spring boot打包docker镜像步骤如下: (一) 在pom.xml文件中添加docker配置: <!--docker maven plugin,在目录src/main/docker下创建Dockerfile文件,Dockerfil

  • Docker镜像+nginx 部署 vue 项目的方法

    一.打包vue项目 在开发完的vue项目输入如下命名,打包生成dist文件夹 yarn build / npm run build 此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西. 如果将该dist目录整个传到服务器上,部署成静态资源站点就能直接访问到该项目. 二.获取nginx 镜像 nginx 是一个高性能的HTTP和反向代理服务器,此处我们选用 nginx 镜像作为基础来构建我们的vue应用镜像. 在终端输入: docker pull nginx 即可以获取到ngin

  • .NETCore Docker实现容器化与私有镜像仓库管理

    一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖.相较于虚拟机而言,Docker共享的是宿主机的硬件资源,使用容器来提供独立的运行环境来运行应用.虚拟机则是基于Supervisor(虚拟机管理程序)使用虚拟化技术来提供隔离的虚拟机,在虚拟机的操作系统上提供运行环境!虽然两者都提供了很好的资源隔离,但很明显Docker的虚拟化开销更低! Docker涉及了三个核心

  • Docker创建本地镜像实现方法解析

    所谓的容器实际上是在父镜像的基础上创建了一个可读写的文件层级,所有的修改操作都在这个文件层级上进行,而父镜像并未受影响,如果读者需要根据这种修改创建一个新的本地镜像,有两种不同的方式,本文先来看第一种方式:commit. 创建容器 首先,根据本地镜像运行一个容器,如下: 命令解释: 首先执行docker images命令,查看本地镜像. 根据本地镜像中的nginx镜像,创建一个名为nginx的容器,并启动. 将宿主机中一个名为index.html的文件拷贝到容器中. 访问容器,发现改变已经生效.

  • 最新IDEA快速实现Docker镜像部署运行的过程详解

    背景 使用idea配合docker,实现从javaweb开发,部署,运行全过程. 环境:已经配置好的docker.已经安装好的mysql8容器.一个springBoot 框架的web项目(内含swagger,便于测时) 开启Docker的远程连接 网上的方法找不到对应的docker.service文件,可能版本或者安装方式不同. 通过 systemctl status docker 查找docker.service文件位置: 修改/etc/systemd/system/docker.servic

  • 简述Docker安装Tomcat镜像并部署web项目

    一.安装Tomcat 1.查找Docker Hub上的tomcat镜像 docker search tomcat 2.拉取官方的镜像 docker pull tomcat 等待下载完毕,需要一些时间. 3.查看docker所有的镜像 docker images 4.启动tomcat镜像 注:前者是外围访问端口:后者是容器内部端口 docker run -d -p 8080:8080 tomcat 注:前者是外围访问端口:后者是容器内部端口 如下命令可后台启动tomcat -d: 后台运行容器,并

  • DockerHub 镜像仓库的使用详解

    之前我们使用的镜像都是从 DockerHub 公共仓库拉取的,我们也学习了如何制作自己的镜像,但是通过 tar 包的方式实现镜像的备份恢复迁移对于团队协作开发并不是特别友好,我们也可以将镜像推送至 DockerHub 仓库方便使用. 温馨提示:如果构建的镜像内携带了项目数据,建议还是使用私有仓库比较好. 注册账号 官网:https://hub.docker.com/ 登录账号 通过 docker login 命令输入账号密码登录 DockerHub. 推送镜像至仓库 为了方便测试,我们将 hel

  • Docker私有仓库管理和删除本地仓库中的镜像

    一:Docker私有仓库安装 1. 下载镜像是有镜像仓库: [root@localhost ~]# systemctl start docker #如果已经有镜像了,强制删除原来的镜像的方式如下: [root@xxx-pub /]# docker rmi -f docker.io/registry Untagged: docker.io/registry:latest Untagged: docker.io/registry@sha256:51bb55f23ef7e25ac9b8313b139a

  • Docker镜像管理常用操作代码示例

    镜像也是docker的核心组件之一,镜像时容器运行的基础,容器是镜像运行后的形态.总体来说,镜像是一个包含程序运行必要以来环境和代码的只读文件,它采用分层的文件系统,将每一层的改变以读写层的形式增加到原来的只读文件上. 镜像与容器的关系 前文已经向读者介绍过容器的使用了,细心的读者可能已经发现,容器在启动或者创建时,必须指定一个镜像的名称或者id,其实,这时镜像所扮演的角色就是容器的模版,不同的镜像可以构造出不同的容器.如下命令: docker run -itd --name nginx ngi

  • php中的mongodb select常用操作代码示例

    前面说到了mongodb安装,配置,集群,以及php的插入与更新等,请参考:mongodb. 下面说一下,mongodb select的常用操作 测试数据: 复制代码 代码如下: { "_id" : 1, "title" : "红楼梦", "auther" : "曹雪芹", "typeColumn" : "test", "money" : 80,

  • Docker数据卷常用操作代码实例

    如果开发者使用了Dockerfile去构建镜像,也可以在构建镜像时声明数据卷,例如下面这样: FROM nginx ADD https://www.baidu.com/img/bd_logo1.png /usr/share/nginx/html/ RUN echo "hello docker volume!">/usr/share/nginx/html/index.html VOLUME /usr/share/nginx/html/ 这样就配置了一个匿名数据卷,运行过程中,将数据

  • Docker镜像的commit操作示例及作用

    目录 Docker 镜像是什么 UnionFS(联合文件系统) Docker 镜像加载原理 分层的镜像 Docker 镜像 commit 操作 docker commit 能做什么 案例演示 Docker 镜像是什么 UnionFS(联合文件系统) UnionFS(联合文件系统):Union文件系统是一种分层.轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a

  • docker镜像管理命令详解

    目录 一.国内Docker镜像仓库 三.搜索镜像 四.拉取镜像 五.列出镜像 六.虚悬镜像 七.删除本地镜像 八.镜像的导入导出 导入方式一(不输出详细信息): 导入方式二(输出详细信息): 一.国内Docker镜像仓库 由于大家都知道的原因,从国外的docker 仓库中pull镜像的下载速度实际上是很慢的.国内的一些一线厂商以及docker官方都在国内免费提供了一些docker镜像仓库,使用国内的镜像仓库下载速度会有很大的提升.例如: Docker 官方提供的中国 registry mirro

  • Docker镜像的导入导出代码实例

    Docker镜像的导入导出 本文介绍Docker镜像的导入导出,用于迁移.备份.升级等场景,准备环境如下: CentOS 7.0 Docker 1.18 导入导出命令介绍 涉及的命令有export.import.save.load save 命令 docker save [options] images [images...] 示例 docker save -o nginx.tar nginx:latest 或 docker save > nginx.tar nginx:latest 其中-o和

  • Python tkinter常用操作代码实例

    这篇文章主要介绍了Python tkinter常用操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.创建单选框 form tkinter import * #创建窗口体 window = tk() #初始化组合件绑定 w1 = IntVar() #设置初始选择项1 w1.set(1) def Occupation(): lable = Label(text="请选择职业").place(x=20,y=15) m=1 fo

  • Python中字典常用操作的示例详解

    目录 前言 初始化 合并字典 字典推导式 Collections 标准库 字典转 JSON 字典转 Pandas 前言 字典是Python必用且常用的数据结构,本文梳理常用的字典操作,看这个就够了,涉及: 初始化 合并字典 字典推导式 Collections 标准库 字典转JSON 字典转Pandas 初始化 # 最常用这种 my_object = { "a": 5, "b": 6 } # 如果你不喜欢写大括号和双引号: my_object = dict(a=5,

  • JQuery 常用操作代码

    //遍历option和添加.移除option function changeShipMethod(shipping){ var len = $("select[@name=ISHIPTYPE] option").length if(shipping.value != "CA"){ $("select[@name=ISHIPTYPE] option").each(function(){ if($(this).val() == 111){ $(thi

  • Python数据结构dict常用操作代码实例

    dict是python中的常用数据结构,应该尽量掌握其使用方法 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 代码如下 """ 初始化一个dict的四种方式: 1. dict() -> 创建一个空的dict 2. dict(mapping) -> new dictionary initialized from a mapping ob

随机推荐