一、基本概念

  Docker包括三个基本概念镜像、容器、仓库。

  Docker镜像:就是一个只读的模板。例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或其他应用程序。用户可以直接从其他人那你下载一个已经做好的镜像直接使用。

  Docker容器:Docker利用容器来运行应用。容器是从镜像创建的运行例。

  Docker仓库:仓库是存放镜像文件的场所。仓库分为公开仓库和私有仓库。最大的公开仓库是Docker Hub,存放这数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool。

二、Docker安装

  2.1 Ubuntu系统安装Docker

  Ubuntu14.04系统中自带Docker包,可以直接安装(可能不是最新的)。

sudo apt-get update
sudo apt-get install -y docker.io

 Ubuntu14.04以下的可以通过Docker源安装最新的Docker版本。

$ sudo apt-get install apt-transport-https
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker

启动Docker服务:sudo service docker start

  2.2 Centos系列安装Docker

  CentOS6

    安装Docker,命令如下:

sudo yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
sudo yum install docker-io

  CentOS7

    CentOS7系统CentOS-Extras库中已带Docker,可以直接安装:

sudo yum install docker

三、Docker镜像

  Docker运行容器需要本地存在对应的镜像,如果镜像不存在本地,Docker会从镜像仓库下载(默认是Docker Hub公共注册服务器中的仓库)。

  3.1 获取镜像

  通过 docker pull 命令从仓库获取所需要的镜像。如:sudo docker pull ubuntu:12.04,该命令相当于 sudo docker pull registry.hub.docker.com/ubuntu:12.04命令

使用docker images显示本地已有的镜像。

在列出来的信息中,可以看到几个字段信息:

  • 来源于哪个仓库,如ubuntu
  • 镜像标记,如12.04
  • 它的ID号(唯一)
  • 创建时间
  • 镜像大小

  3.2 创建本地镜像

  使用docker build 创建一个新的镜像。首先需要创建一个Dockerfile,包含以下如何创建镜像的指令。

  • 使用 # 来注释
  • FROM指令告诉Docker使用哪个镜像作为基础
  • 接着是维护者的信息
  • RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用apt-get 来安装一些软件

编写完成Dockerfile后,可以使用 docker build 来生成镜像。使用下面命令:

sudo docker build -t="myimage" /Microheart/

 其中 -t 标记来添加tag(全部为小写)。/Microheart/表示Dockerfile文件所在的文件夹。如果Dockerfile中指定的Docker的基础镜像本地没有,则会下载。其中过程为:首先上传Dockerfile内容,然后Dockerfile中的指令被一条条执行。每一步都创建一个新容器,在容器中执行指令并提交修改。所有指令全部执行完后,返回最终的镜像Id。所有的中间步骤所产生的容器都被删除和清理。注意一个镜像不能超过127层。

  3.3 上传镜像到Docker Hub

  首先注册Docker用户,然后本地用 docker login 登录,登录后使用 docker push 上传镜像。需要注意的是Docker Hub对镜像名称有要求,需要命名为:用户的的注册名/镜像名。如果本地的镜像名不符合,通过 docker tag 修改。

  3.4 存出和载入镜像

  存出镜像就相当于将镜像打包,然后复制到别的机器上解压(载入镜像)使用。使用 docker save 命令存出。使用 docker load 命令载入。例如:

root@VM---ubuntu:/Microheart# docker save -o ubuntu_12..tar(文件名) ubuntu(镜像名) //将ubuntu镜像载出
root@VM---ubuntu:/Microheart# docker load -i ./ubuntu_12..tar    //载入
Loaded image: ubuntu:12.04

  3.5 移除镜像

  使用 docker rmi 加上镜像名,移除镜像。

Docker系列之Docker镜像(读书笔记)的更多相关文章

  1. docker容器与容器云读书笔记1

    搭建docker应用栈 操作系统: ubuntu 16.04.1 LTS 桌面版 1. 准备工作 换网易源, gedit 会报一个metadata的告警, 不用理会, sudo apt-get upd ...

  2. docker 系列 - 企业级私有镜像仓库Harbor部署(转载)

     本文转载自 搜云库 的文章 https://www.jianshu.com/p/7d76850de03f  , 感谢作者 3.png 上一篇文章搭建了一个具有基础功能,权限认证.TLS 的私有仓库, ...

  3. Docker 系列之 常用镜像

    Ubuntu 实战 操作 # 拉取 18.04 版本的 Ubuntu 镜像 docker pull ubuntu:latest # 以交互方式运行并进入 ubuntu 容器环境 docker run ...

  4. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

  5. Docker系列05—Docker 存储卷详解

    本文收录在容器技术学习系列文章总目录 1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加面成,启动容器时,docker会加载只读镜像层并在镜 ...

  6. docker 系列之 docker安装

    Docker支持以下的CentOS版本 CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker. ...

  7. Docker系列二: docker常用命令总结

    https://docs.docker.com/reference/  官方命令总结地址 容器生命周期管理 1.docker run 创建一个新的容器并运行一个命令 docker run [optio ...

  8. Docker系列一: docker简介及基本环境安装

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  9. Docker系列03—Docker 存储卷

    一.存储卷介绍 1.1 背景 Docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加而成,启动容器时,docker会加载只读镜像层并在镜像栈顶部加一个读写层: 如果运行的容器修改了 ...

随机推荐

  1. 20165213Java第二次实验

    实验二Java面向对象程序设计 实验1 实验目的与要求: 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成单元测试的学习 提交 ...

  2. Spring遇到的问题合集

    2018-09-15 元素 "tx:annotation-driven" 的前缀 "tx" 未绑定. 后来我加了 http://www.springframew ...

  3. day30

    作业 #__author : 'liuyang' #date : 2019/4/11 0011 下午 12:36 # 这两天 1.软件开发规范 不写 没法做新作业 #2. 认证+上传 +下载 + 校验 ...

  4. selenium_unittest基本框架

    from selenium import webdriver import unittest import time #创建类引入unitest.testcase用例库 class BaiDu_tes ...

  5. drf2 FBV和CBV

    FBV 基于函数的视图 CBV 基于类的视图 也就是说我们是用函数编写视图~还是类编写视图 urlpatterns = [ path('admin/', admin.site.urls), path( ...

  6. python 复数类型

    1 Python中的算数虚数不能单独存在,它们总是和一个值为0.0的实数部分一起构成一个复数表示虚数的语法:real+imagj实数部分和虚数部分都是浮点数虚数部分必须有j或J下面是些得数:64.23 ...

  7. centos7图形界面

    安装centOS7服务器版本,系统默认是不会安装GUI的图形界面程序,这个需要手动安装CentOS7 Gnome GUI包. 安装GUI包.开机自动启动图形界面.重启 # yum groupinsta ...

  8. 微服务日志之.NET Core使用NLog通过Kafka实现日志收集

    一.前言 NET Core越来越受欢迎,因为它具有在多个平台上运行的原始.NET Framework的强大功能.Kafka正迅速成为软件行业的标准消息传递技术.这篇文章简单介绍了如何使用.NET(Co ...

  9. 杭州某知名xxxx公司急招大量java以及大数据开发工程师

    因公司战略以及业务拓展,收大量java攻城狮以及大数据开发攻城狮. 职位信息: java攻城狮: https://job.cnblogs.com/offer/56032 大数据开发攻城狮: https ...

  10. 下单快发货慢:一个 JOIN SQL 引起 SqlClient 读取数据慢的奇特问题

    最近遇到一个非常奇特的问题,在一个 ASP.NET Core 项目中从 SQL Server 2008 R2 中查询获取 100 条记录竟然耗时 10 多秒,如果是查询本身慢,那到不是什么奇特的问题. ...