前言:

以前学习docker 都是零零碎碎的,只知道用,有些莫名其妙的报错自己也没有思路去解决,所以基于一本专业的介绍docker的书籍,重新开启学习,该博客就记录下我自己的学习过程吧。

1.docker是什么:
与虚拟机的区别引用一篇博客:
Docker其实也是类似于虚拟机的。至少在作用目的上是一致的。用一个“经典”的例子来作对比就是:将部署应用比作鸣人来搓螺旋丸,虚拟机类似于鸣人的影分身之术,每个分身(虚拟机)都拥有同样的身体(OS,环境),但是在查克拉(CPU)的使用上,每个分身的查克拉会均分自真身(真正的主机),这个行为也可以称之为CPU虚拟化,但是这里浪费了分身,用分身来搓一个小螺旋丸,太浪费了……而对于docker来说,就像是九尾模式的鸣人,我直接利用我体内的九尾查克拉(硬件资源),分成九只爪子,每只爪子相互独立,也可以搓小螺旋丸……
2.docker 3大核心:镜像,仓库,容器
2.1
镜像就是一个一个类似于虚拟机的镜像,可以理解为一个面向Docker 引擎的只读模块包含了文件系统,如包含了ubuntu,就是ubuntu镜像,如包含了Apache 就是Apache镜像,
2.2
容器:容器是一个镜像的实例,利用容器来隔离有点像沙箱,如果说镜像就是一个特定的文件系统,那么容器就是一个完整的简易的操作系统包含文件系统,进程,用户空间,和网络空间,以及各种程序盒子等,书上说容器是镜像的可写层,我是这样理解的,镜像是不变的,当成是一个不变的类,然后有很多很多的实例,比如一个ubuntu镜像可以生成各种各样的程序容器。
2.3
仓库:
仓库好理解,就是用来放镜像的地方,分为本地仓库(私有仓库)和云仓库(公开仓库),有各种各样的仓库,每个仓库通常是放一类镜像,该类镜像用tag来区分,而最大的稳定国内访问的仓库就是Docker Hub。
2.pull 镜像,拉取容,pash上传到仓库
docker images

各字段解释:仓库TAG标识符,IMAGE ID 镜像唯一标识符,创建时间,仓库大小
docker inspect 镜像详细信息
 
docker pull ubuntu
进入镜像:
docker -t -i IMAGE ID /bin/bash 镜像id 前几个字母可代替完整的id
 

2.搜索镜像:
docker search TERM
参数: --automated=false 重要,官方还是自建
--no-trunc=false 输出信息不截断
--stars=0 输出好评镜像
3.删除镜像:
docker rm 容器id
docker rmi image(标签或者ID)
docker rmi -f id 强制删除,建议不用有遗留问题。
解决docker 镜像多引用问题导致镜像删不掉问题:
如图
 
 

 

解决办法:

先docker rm 容器id
在docker rmi 镜像id 就可以了
删除错误有错误提示的按照错误去删除。注意运行中的容器是删不掉的,先stop了。
4.创建镜像:
3种方法:
基于已有的镜像去创建,
基于本地模板导入,
基于Dockerfile创建
docker commit 命令: 其命令格式为
docker commit [option]CONTALINER [REPOSITORY[:TAG]]
-a: --author=" "作者信息
-m,--message=" " 提交消息
-p, --pause =true 提交时暂停容器运行
1.基于现有的仓库去创建:
1.1.修改镜像:
 

制作镜像:如图test镜像制作成功。
docker commit -m "Added a new file" -a "lidaye" 47b19964fb50 test
 

2.载入本地模板:
命令docker import - 名字
模板下载一般用openVZ 下载地址:http://openvz.org/Download/templates/precreated
下载为一个tar压缩包:ubuntu xxx.tar.gz
命令:sudo cat ubuntu xxx.tar.gz | docker import -ubuntu
3存出和载入镜像:
docker save和 docker load命令来存出和载入镜像
在本地环境和docker本地仓库的联系。
3.dockerfile 有专门章节。
 

初识docker-镜像的更多相关文章

  1. Docker 学习应用篇之一: 初识Docker

    Docker 自从2013年以来就非常的火热,无论是从github上的代码活跃度,还是Redhat在RHE6.5中集成对Docker的支持,等等.第一次接触Docker,还是老师给我们介绍的. 1.初 ...

  2. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  3. 理解Docker(2):Docker 镜像

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  4. 如何合并两个Docker 镜像

    http://www.open-open.com/lib/view/open1437746544709.html 在你的机器上使用docker pull来从Docker Hub下载镜像. docker ...

  5. Docker镜像的管理和创建

    1. Docker镜像和Docker容器:      Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader ...

  6. docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储

    前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...

  7. docker使用阿里云Docker镜像库加速

    官方镜像下载实在是慢,于是开通了阿里云开发者帐号, 官方帮助 阿里云Docker镜像库 阿里云容器Hub服务:http://dev.aliyun.com/search.html 来自云端的容器Hub服 ...

  8. 第四章 使用Docker镜像和仓库(二)

    第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...

  9. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

  10. 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

随机推荐

  1. prefixspan python

    from:https://github.com/chuanconggao/PrefixSpan-py API Usage Alternatively, you can use the algorith ...

  2. ID绘图工具的使用5.29

    1.按住ALT拖动矩形工具,以中心绘制矩形.  绘制矩形的过程中,按住空格键可以调整矩形的位置. 2选择矩形工具,单击,可以精确输入尺寸. 3“窗口‘”信息“面板调出来.这样在绘制的时候可以边绘制边看 ...

  3. C++获取网络数据

    1.  获取数据 工具libcurl libcurl主要功能就是用不同的协议连接和沟通不同的服务器.libcurl当前支持http, https, ftp, gopher, telnet, dict, ...

  4. STL的内存管理

    SGI STL 的内存管理 http://www.cnblogs.com/sld666666/archive/2010/07/01/1769448.html 1. 好多废话 在分析完nginx的内存池 ...

  5. My SQL随记 002 登陆

    如何启动MySQL服务 Step1 我的电脑右键属性找到 控制面板 选择 系统和安全 Step2 管理工具中找到服务 Step3 找到你的MySQL启动服务 如何通过黑窗口登陆退出 MySQL Ste ...

  6. Linux设备驱动程序 第三版 读书笔记(一)

    Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...

  7. 在Fiddler中添加自己所需的显示列

    有时候我们想了解请求响应的时间.服务器IP等相关信息,Fiddler默认是没有显示的,这个时候就需要我们借助高级用法---自定义显示列, 其实主要就是操作这个文件Fiddler2\Scripts\Cu ...

  8. setfacl语法2

    setfacl命令可以用来细分linux下的文件权限. chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 换句话说,setfacl可以更精 ...

  9. Spring Boot重要内容

    首先POM配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  10. 剑指Offer 38. 二叉树的深度 (二叉树)

    题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 题目地址 https://www.nowcoder.com/prac ...