1,Docker简介

1.1 Docker是什么?

Docker官网: https://www.docker.com/

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

1.2 Docker架构原理?

Docker三要素,镜像,容器,仓库

1.镜像

Docker 镜像(Image)就是一个只读的模板,它可以是一个可运行软件(tomcat,mysql),也可以是一个系统(centos)。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

2.容器

Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

3.仓库

仓库(Repository)是集中存放镜像文件的场所,类似GitHub存放项目代码一样,只不过Docker Hub是由来存镜像(image)的。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag,类似版本号)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker
面向对象
容器
对象
镜像

1.3 Docker有什么用?

1,简化环境搭建,提高开发生命周期效率;

2,大大简化运维工作量;

3,微服务利器;

1.4 Docker容器与虚拟机区别?

Docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好。

下图是虚拟机的体系结构:

  • server - 表示真实电脑。
  • Host OS - 真实电脑的操作系统,例如:Windows,Linux
  • Hypervisor - 虚拟机平台,模拟硬件,如VMWare,VirtualBox
  • Guest OS - 虚拟机平台上安装的操作系统,例如CentOS Linux
  • App - 虚拟机操作系统上的应用,例如nginx

下图是Docker的体系结构:

  • server - 表示真实电脑。
  • Host OS - 真实电脑的操作系统,例如:Windows,Linux
  • Docker Engine - 新一代虚拟化技术,不需要包含单独的操作系统。
  • App - 所有的应用程序现在都作为Docker容器运行。

这种体系结构的明显优势是,不需要为虚拟机操作系统提供硬件模拟。所有应用程序都作为Docker容器工作,性能更好。

 
Docker容器
虚拟机(VM)
操作系统
与宿主机共享OS
宿主机OS上运行宿主机OS
存储大小
镜像小,便于存储与传输
镜像庞大(vmdk等)
运行性能
几乎无额外性能损失
操作系统额外的cpu、内存消耗
移植性
轻便、灵活、适用于Linux
笨重、与虚拟化技术耦合度高
硬件亲和性 
面向软件开发者
面向硬件运维者

Docker优点:轻量级,速度快,运行应用隔离,方便维护...

2,Docker安装

2.1 Docker版本介绍

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。

社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。

我们平时用社区版就足够了。所以我们安装社区版;

2.2 Docker安装官方文档

我们主要参考:https://docs.docker.com/install/linux/docker-ce/centos/  来安装;

2.3 工具准备

前置课程:Centos课程  http://www.java1234.com/javaxuexiluxiantu.html

打包下载: http://pan.baidu.com/s/1i55jJAt

虚拟机 VMware

centos7安装下虚拟机VM上;

连接工具 才用 FinalShell  官方地址:http://www.hostbuf.com/

2.4 Docker安装步骤

我们切换到root用户

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

$ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ yum update

3、卸载旧版本(如果安装过旧版本的话)

$ yum remove docker  docker-common docker-selinux docker-engine

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6,安装最新版本的Docker

$ yum install docker-ce docker-ce-cli containerd.io

7,启动Docker并设置开机启动

$ systemctl start docker

$ systemctl enable docker

8,验证Docker

$ docker version

说明安装OK;

9,Docker HelloWorld测试;

$ docker run hello-world

因为本地没有这个镜像,所以从远程官方仓库去拉取,下载;

然后我们再执行一次;

OK了

2.5 Docker配置阿里云镜像仓库

Docker默认远程仓库是 https://hub.docker.com/

比如我们下载一个大点的东西,龟速

由于是国外主机,类似Maven仓库,慢得一腿,经常延迟,破损;

所以我们一般都是配置国内镜像,比如阿里云,网易云等;推荐阿里云,稳定点;

配置步骤如下:

1,登录进入阿里云镜像服务中心,获取镜像地址

进入阿里云容器镜像服务地址:点这里快速进入

使用你的淘宝账号密码登录

这里我们获取镜像地址;

2,在/etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入

{

"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]

}

3,重启daemon

systemctl daemon-reload

4,重启docker服务

systemctl restart docker

5,测试

由于速度太快,截图都难;

3,HelloWorld运行原理

运行  docker run hello-world

本地仓库未能找到该镜像,然后去远程仓库寻找以及下载该镜像;

然后我们再执行该命令:

出来了 Hellowold。我们具体来分析下 执行原理和过程;

从左到右 client客户端,Docker运行主机,远程仓库;

docker build ,pull,run分别是 构建,拉取,运行命令,后面再细讲;

中间Docker主机里有 Docker daemon主运行线程,以及Containers容器,容器里可以运行很多实例,(实例是从右侧Images镜像实例化出来的)Images是存储再本地的镜像文件,比如 Redis,Tomat这些镜像文件;

右侧是Registry镜像仓库,默认远程镜像仓库 https://hub.docker.com/  不过是国外主机,下载很慢,不稳定,所以我们后面要配置成阿里云仓库镜像地址,稳定快捷;

执行 docker run hello-world的过程看如下图例:

4,Docker基本命令

4.1 启动Docker

systemctl start docker

4.2 停止Docker

systemctl stop docker

4.3 重启Docker

systemctl restart docker

4.4 开机启动Docker

systemctl enable docker

4.5 查看Docker概要信息

docker info

4.6 查看Docker帮助文档

docker --help

4.7 查看Docker版本信息

docker version

5,Docker镜像

5.1 docker images 列出本机所有镜像

REPOSITORY
镜像的仓库源
TAG
镜像的标签(版本)同一个仓库有多个TAG的镜像,多个版本;我们用REPOSITORY:TAG来定义不同的镜像;
IMAGE ID
镜像ID,镜像的唯一标识
CREATE
镜像创建时间
SIZE
镜像大小

OPTIONS 可选参数:

-a
显示所有镜像(包括中间层)
-q
只显示镜像ID
-qa
可以组合
--digests
显示镜像的摘要信息
--no-trunc
显示完整的镜像信息 

5.2 docker search 搜索镜像

和 https://hub.docker.com/ 这里的搜索效果一样;

OPTIONS可选参数:

--no-trunc
显示完整的镜像描述
-s
列出收藏数不小于指定值的镜像
--automated
只列出Docker Hub自动构建类型的镜像

5.3 docker pull 下载镜像

docker pull 镜像名称:[TAG]

注意:不加TAG,默认下载最新版本latest

5.4 docker rmi 删除镜像

1,删除单个:docker rmi 镜像名称:[TAG]

如果不写TAG,默认删除最新版本latest

有镜像生成的容器再运行时候,会报错,删除失败;

我们需要加 -f 强制删除

2,删除多个:docker rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]

中间空格隔开

3,删除全部:docker rmi -f $(docker images -qa)

------------------------------------------------------------------------------------------------------------------------------

作者:java1234_小锋

出处:https://www.cnblogs.com/java688/p/13132444.html

版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

------------------------------------------------------------------------------------------------------------------------------

三文搞懂学会Docker容器技术(上)的更多相关文章

  1. 三文搞懂学会Docker容器技术(中)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 6,Docker容器 6.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --na ...

  2. 三文搞懂学会Docker容器技术(下)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 三文搞懂学会Docker容器技术(中) 7,Docker容器目录挂载 7.1 简介 容器目录挂载: 我们可以在创建容器的时候,将宿主机的目录与容器 ...

  3. 一文搞懂各种 Docker 网络 - 每天5分钟玩转 Docker 容器技术(72)

    前面各小节我们先后学习了 Docker Overaly,Macvaln,Flannel,Weave 和 Calico 跨主机网络方案.目前这个领域是百家争鸣,而且还有新的方案不断涌现. 本节将从不同维 ...

  4. 第 8 章 容器网络 - 072 - 一文搞懂各种 Docker 网络

    Docker 起初只提供了简单的 single-host 网络,显然这不利于 Docker 构建容器集群并通过 scale-out 方式横向扩展到多个主机上. 跨主机网络方案: Docker Over ...

  5. 072、一文搞懂各种Docker网络 (2019-04-17 周三)

    参考https://www.cnblogs.com/CloudMan6/p/7587532.html   前面各个小节我们学习了 Docker Overlay .Macvlan .Flannel.We ...

  6. 【转帖】一文看懂docker容器技术架构及其中的各个模块

    一文看懂docker容器技术架构及其中的各个模块 原创 波波说运维 2019-09-29 00:01:00 https://www.toutiao.com/a6740234030798602763/ ...

  7. 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

    前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...

  8. 一文了解Docker容器技术的操作

    一文了解Docker容器技术的操作 前言一.Docker是什么二.Docker的安装及测试Docker的安装Docker的Hello world测试三.Docker的常见操作镜像的基本操作容器的基本操 ...

  9. 读懂 Deployment YAML - 每天5分钟玩转 Docker 容器技术(125)

    既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似. 还是以 nginx-deploymen ...

随机推荐

  1. 什么是cookie?

    cookie是什么? 其实cookies是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookies就好像你的一张身份证,你电脑上的cooki ...

  2. 写给程序员的机器学习入门 (五) - 递归模型 RNN,LSTM 与 GRU

    递归模型的应用场景 在前面的文章中我们看到的多层线性模型能处理的输入数量是固定的,如果一个模型能接收两个输入那么你就不能给它传一个或者三个.而有时候我们需要根据数量不一定的输入来预测输出,例如文本就是 ...

  3. 2020 网鼎杯wp

    2020 网鼎杯WP 又是划水的一天,就只做出来4题,欸,还是太菜,这里就记录一下做出的几题的解题记录 AreUSerialz 知识点:反序列化 打开链接直接给出源码 <?php include ...

  4. Parrot os笔记本推荐

    parrot os基于debian开发的,因此同样适用于其他linux:笔记本集显最好,linux直接适用于intel,不用手动切换显卡,大多数linux玩家及pentester不需要高性能显卡,当然 ...

  5. Beta冲刺 ——5.27

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.组员一起学习Git分支管 ...

  6. Rocket - debug - TLDebugModuleInner - Drive Custom Access

    https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw 简单介绍TLDebugModuleInner中的针对Custom的访问. 1. customNode ...

  7. Rocket - jtag - JtagStateMachine

    https://mp.weixin.qq.com/s/cFXVOBHayV2w27jpT5RglA 简单介绍JtagStateMachine的实现. 1. 简单介绍 根据IEEE 1149.1-200 ...

  8. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  9. CSS选择器有哪些?哪些属性可以继承?

    CSS选择符: id选择器(#myid). 类选择器(.myclassname). 标签选择器(div, h1, p). 相邻选择器(h1 + p). 子选择器(ul > li). 后代选择器( ...

  10. Java蓝桥杯 算法训练 复数归一化

    算法提高 复数归一化 时间限制:1.0s 内存限制:512.0MB 编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(aa+bb) + ib/sqrt(aa+b* ...