第五节 docker的镜像相关命令

  • 5.1.从仓库下载镜像命令
    • 5.1.1docker pull命令
    • 5.1.2标记从哪里找
    • 5.1.3 层的概念
    • 5.1.4查看docker容器里的centos的发行版
  • 5.2查看镜像信息命令
  • 5.3添加标签命令
  • 5.4查看镜像详细信息命令
  • 5.5搜寻镜像命令
  • 5.7创建镜像命令
    • 5.7.1基于已有镜像的容器创建
    • 5.7.2. 基于本地模板导入
    • 5.7.3. 基于dockerfile创建
  • 5.8存出和载入镜像命令
    • 5.8.1.使用 docker save 命令存出镜像
    • 5.8.2.使用 docker load 命令载入镜像
  • 5.9 repositry 和registry的关系
  • 5.10登入/登出docker hub命令
  • 5.11上传镜像命令
  • 5.12 面试问题

镜像是docker的三大核心概念之一.
Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,docker会尝试先从默认镜像仓库下载(默认使用docker hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库.
需要学会如下知识点:
1.从仓库获取镜像
2.管理本地主机上的镜像
3.镜像实现的基本原理

5.1.从仓库下载镜像命令

镜像是docker运行容器的前提.可使用docker pull 命令来从仓库获取所需要的镜像

5.1.1docker pull命令

基本语法: docker pull +选项+镜像名字【:标记】
选项:-a(标签)----下载所有标记
标记不能随便写,要按照官网上给的写

5.1.2标记从哪里找

例如:查找centos的标记
首先登陆docker hub网址

输入centos后回车

进入centos官方-----找到对应的tag标记

可以通过指定标签来下载特定版本的某一个镜像,若不指定,则默认标签为latest下

5.1.3 层的概念

1.下载过程中可以看到,镜像文件一般由若干层组成,下载过程中会获取并输出镜像的各层信息.
2.层(Layer)其实是AUFS(Advanced Union File System,高级联合文件系统) 中的重要概念,是实现增量保存和更新的基础.
Docker的文件系统是aufs

层的复用会节省内存和硬盘空间

5.1.4查看docker容器里的centos的发行版

1.先下载centos的最新镜像

2.查看虚拟机上的centos版本和容器里的centos的版本

3.进入容器里对应的centos版本----直接查看对应的版本

4.总结
这样在docker容器里的centos的最新版本镜像就已经下载并安装好了,可以执行运行,这就是docker轻量级虚拟化的技术。而在虚拟机中需要下载对应版本的镜像,然后在配置相应的环境,步骤繁琐,资源利用的多,建议使用docker镜像

5.2查看镜像信息命令

1.使用docker images 命令可以列出本地主机上的镜像

1)repository(仓库)名-----对应下载的镜像名或者仓库名
2)tag(标记)-----不加tag默认是lastest,可以指定tag
3)image id(镜像编号)-----为了互相区分镜像
如果镜像编号一样,那说明是同一个镜像
4)created(创建)----创建时间为官网上创建的时间
5)size(大小)-------镜像对应的大小
镜像之间可能存在层复用

5.3添加标签命令

1.使用docker tag命令为本地镜像添加新的标签

2.如果有多个同名的镜像或者仓库,为了区分就是需要使用tag,如果不写默认就是latest
3.语法格式:docker tag 镜像名 标签名

4.添加的标签就成为新的镜像名,但是文件内容不变

5.4查看镜像详细信息命令

1.使用docker inspect 命令可以获取该镜像的详细信息

2.语法格式:docker inspect +选项+镜像名/镜像id/容器id
选项 -f-----以go语言指定的模板查看指定信息
Docker inspect -f “{{.指定内容1.指定内容2}}” +镜像名
Docker inspect -f “{{.指定内容1}}” +镜像名
练习:

练习

5.5搜寻镜像命令

  1. 使用docker search 命令来搜索远端仓库中共享的镜像.默认搜索docker hub官方仓库中的镜像.

2.语法格式:docker search+选项+搜索内容
3.练习:

4.建议在官网上搜索对应的内容,信息比较多,且新

5.6删除镜像命令

  1. 使用docker rmi 命令可以删除镜像

2.语法格式:docker rmi +要删除镜像名-----rmi(remove images)
选项: -f (force)----强制删除镜像
删除镜像时,出现提示信息,原因是其他容器依赖要删除的这个镜像,如果删除了就会导致其他容器不能正常使用。
3.练习:

练习:删除没有依赖的镜像时,会现撤销标签

练习:删除一个镜像对应的多个标签时,第一次删除只会删除标签,不会删除内容,第二次就是执行命令后,就是删除镜像内容
当一个镜像有多个标签的时候,docker rmi 命令只是删除了镜像多个标签中的指定的标签而已,并不影响镜像文件.

注意:
我们删除镜像,要保证并没有运行的容器依赖于该镜像,否则不能直接删除,
删除镜像的前提是需要将所有镜像运行的容器先停止,然后在开始删除容器,删除对应的镜像

5.7创建镜像命令

创建镜像的方法有三种

  1. 基于已有镜像的容器创建
  2. 基于本地模板导入 (用的最少)
  3. 基于dockerfile创建 (常用)

5.7.1基于已有镜像的容器创建

1.使用docker commit 命令

2.语法格式:docker commit +容器+新的镜像名
3.练习:创建yyn镜像
1)查看当前已有的镜像

2)运行centos镜像
—使其成为容器—容器id为cb009开头

3)在容器里创建文件夹

4)退出容器

5)创建yyn镜像
容器的编号可以写部分

6)查看镜像

7)运行yyn镜像
—查看是否有新的目录

注意:不能对应新生成的镜像修改,因为镜像是只读的,如果要修改,就要重新生成镜像

5.7.2. 基于本地模板导入

1.可以直接从一个操作系统模板文件导入一个镜像,在这里推荐使用OpenVZ提供的模板来创建.
2.网址:https://download.openvz.org/template/precreated/

1.导入模板镜像
1)在指定网址下载镜像
可以右键另存为或者使用wget下载

2)命令docker import导入镜像

A)语法格式 :docker import +文件/路径/-
功能描述:从一个tar包导入文件镜像
练习:

注意:这个方法用的少,不建议使用

5.7.3. 基于dockerfile创建

1.Dockerfile的相关知识


2.体系结构
From:基础镜像,当前新的镜像源于哪个镜像
Maintain:镜像作者和邮箱
Run:容器构建时需要运行的命令
Expose:当前容器对外暴露的端口
Workdir:指定在创建容器后,终端默认登陆的进来的工作目录,一个落脚点
Env:用来构建构建镜像过程中设置环境变量
Add:将宿主机目录下的文件复制到镜像且add命令会自动处理url和解压tar包
Copy:构建目录源路径复制到新的一层镜像内的目标路径
Volume:容器数据卷,用于数据保存和持久化工作
Cmd:指定一个容器启动时要运行的命令,dockerfile中可以有多个cmd指令,只有最后一个命令生效,cmd会被docker run之后的参数替换
Entrypoint:指定一个容器启动时要运行的命令,和cmd一样,都在指定容器启动程序及参数,不会覆盖,会追加
Onbulid:触发器,

语法结构网站上有

3.练习1
1)编写dockerfile文件
FROM centos
MAINTAINER yyn106232871@qq.com
ENV mypath /tmp
WORKDIR $mypath
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo “hhp”
CMD echo “success----------fight”
CMD /bin/bash

2)执行此命令docker build
/root/mydocker/dockerfile 是dockerfile的文件路径
[root@docker mydocker]# docker build -f /root/mydocker/dockerfile -t mycentos:1.3 .

开始层层封装镜像

3)查看镜像mycentos

4)执行docker run 查看mycentos的落脚点

5)执行vim命令+查看IP

5.8存出和载入镜像命令

5.8.1.使用 docker save 命令存出镜像

1.查看命令帮助

2.语法格式:docker save +选项-o +镜像名.tar +镜像文件。。。。
3.练习:centos:latest 镜像文件存出为了centos7.tar文件

5.8.2.使用 docker load 命令载入镜像

1.查看命令帮助

2.语法格式:docker load +选项-i +镜像名.tar
3.练习: 将centos7.tar文件载入成镜像

自己的搭建的仓库是私有仓库,公有仓库就是docker hub

5.9 repositry 和registry的关系

1.Repositry----仓库
2.Registry-----注册服务器-----》docker hub 是全球最大的registry,可以注册账号,创建仓库
例如:注册一个mysql用户,创建一个mysql仓库,并把自己的镜像(mysql-server)上传到mysql仓库

3.如果要想下载自己私有仓库里的镜像,必须要在docker hub上注册用户并登录,才能下载成功。如果是下载docker hub上的公有仓库里的镜像不用登录

创建的库

5.10登入/登出docker hub命令

使用docker login命令登录

使用docker logout命令登出

5.11上传镜像命令

使用docker push 上传镜像到仓库,默认上传到dockerhub仓库(需要登录)
上传前需要修改标签
1.查看命令帮助

2.语法格式:docker push 镜像名
3.练习: 未修改标签前上传镜像----失败

docker push这个命令会认为要把yyn镜像上传到[docker.io/library/yyn],而这个库是官方库,只有官方用户才能上传。
4.练习:----给yyn镜像创建新的标签

重新上传添加了标签的镜像yyn---- yyndockerhhp202011/yyn

5.到网站上仓库查看上传的镜像信息—成功

6.退出登录的用户,并将yyndockerhhp202011/yyn镜像删除,在重新下载

5.12 面试问题

docker pull 下来的镜像文件都在哪?
初学 Docker 要反复告诫自己,Docker 不是虚拟机。 Docker不是虚拟机,Docker 镜像也不是虚拟机的 ISO 文件。Docker 的镜像是分层存储,每一个镜像都是由很多层,很多个文件组成。而不同的镜像是共享相同的层的,所以这是一个树形结构,不存在具体哪个文件是 pull 下来的镜像的问题。
具体镜像保存位置取决于系统。
一般Linux系统下,在 /var/lib/docker 里。
对于使用 Union FS 的系统(Ubuntu),如 aufs, overlay2 等,可以直接在 /var/lib/docker/{aufs,overlay2} 下看到找到各个镜像的层、容器的层,以及其中的内容。
对于CentOS这类没有Union FS的系统,会使用如devicemapper这类东西的一些特殊功能(如snapshot)模拟,镜像会存储于块设备里,因此无法看到具体每层信息以及每层里面的内容。

Docker里的镜像多为Ubuntu系统和debian系统,docker开发人员喜欢用这2个系统
软件新且多,内核版本高
cetnos/rhel都是服务器用的操作系统,稳定性好,运维人员用这2个系统

5. docker的镜像相关命令相关推荐

  1. Docker镜像相关命令

    镜像相关命令 1.1 查看镜像 docker images REPOSITORY:镜像名称 TAG:镜像标签 IMAGE ID:镜像ID CREATED:镜像的创建日期(不是获取该镜像的日期) SIZ ...

  2. docker查询镜像命令_Docker镜像相关命令

    1.搜索镜像 可使用 docker search命令搜索存放在 Docker Hub中的镜像.执行该命令后, Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓库. # do ...

  3. docker覆盖镜像默认命令之docker entrypoint

    文章目录 1.前置 2.entrypoint 3.实际使用 ①: 确认镜像设置的ENTRYPOINT是单命令还是可执行文件 ②: 准备可执行文件 ③: 运行镜像 ④: 效果对比 不覆盖效果: 覆盖效果 ...

  4. k8s minikube管理镜像相关命令:minikube image list/pull/load

    使用minikube image load 镜像名:tag可以将本地的镜像load进minikube之中

  5. docker创建容器相关命令【详细版】

    博主介绍

  6. 【Docker】安装部署 及相关命令

    Docker安装部署 及相关命令 前言 一.安装Docker 1.yum包更新到最新 2. 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicema ...

  7. 一句命令删除docker所有镜像或容器

    使用docker有时想删除所有镜像,或删除所有容器,下面给出实现方法:  删除所有镜像: sudo docker rmi $(sudo docker images | sudo grep -o '[0 ...

  8. docker 导出镜像命令

    Docker 导出镜像的命令是: docker save<image_name> -o <output_file> 其中,<image_name> 是你要导出的镜像 ...

  9. Docker的常用管理命令Docker将数据挂载到容器的三种方式

    文章目录 镜像管理命令 容器管理常用命令 docker run常用参数 Docker run的其他参数 docker 创建容器命令 容器资源限制 docker管理容器常用命令 docker将数据挂载到 ...

最新文章

  1. httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过htt......
  2. linux c 调试 strace 诊断 调试程序 异常退出 崩溃
  3. 如何在ubuntu下安装合适的翻译词典
  4. 【数理知识】《数值分析》李庆扬老师-第8章-矩阵特征值计算
  5. (chap6 Http首部) 首部字段概论
  6. LeetCode 102. 二叉树的层次遍历(BFS)
  7. HTML+CSS+JS实现 ❤️透明等离子球ui特效❤️
  8. VS Code 虽开源,但其精华部分是专有的?
  9. MySQL建表规范与常见问题
  10. 2010年c语言上机题库,2010年全国计算机等级考试二级C语言上机题库
  11. 计算机专业课件制作,计算机科学与技术专业毕业论文--多媒体课件设计与制作.doc...
  12. 045-Java-036
  13. minecraft fabric_server 和 MCDR 安装与运行
  14. 用c语言简单的指针求进制,求助!C语言用指针函数实现十进制转,十六进制,八进制,二进制...
  15. 【leetcode】1419. Minimum Number of Frogs Croaking
  16. 《设计模式入门》 19.命令模式
  17. java一个方法排他调用_Java编程实现排他锁代码详解
  18. 计算机开机出现ROM,求助电脑开机问题
  19. IE浏览器里面链接点击在Chrome浏览器打开
  20. 敲门代码python_适用于Linux笔记本电脑的基于敲门的命令

热门文章

  1. 如何设计一个70w在线人数的弹幕系统?
  2. java 全局变量和局部变量的区别
  3. 云顶之奕账号服务器的缩写,LOL云顶之弈美服账号怎么注册 英雄联盟自走棋美服测试服注册方法...
  4. Url路径处理encode和decode
  5. Edge浏览器使用技巧 —— Edge浏览器源码模式如何打开
  6. RabbitMQ入门教程 1
  7. JavaScript作业4
  8. 9012年,当我们讨论js深浅拷贝时我们在说些什么?
  9. 编程面试需要用时3小时 ?华为最强招聘程序员标准出炉!
  10. freeradius mysql 认证_freeradius+mysql+pppoe认证