三文搞懂学会Docker容器技术(上)
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容器技术(上)的更多相关文章
- 三文搞懂学会Docker容器技术(中)
接着上面一篇:三文搞懂学会Docker容器技术(上) 6,Docker容器 6.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --na ...
- 三文搞懂学会Docker容器技术(下)
接着上面一篇:三文搞懂学会Docker容器技术(上) 三文搞懂学会Docker容器技术(中) 7,Docker容器目录挂载 7.1 简介 容器目录挂载: 我们可以在创建容器的时候,将宿主机的目录与容器 ...
- 一文搞懂各种 Docker 网络 - 每天5分钟玩转 Docker 容器技术(72)
前面各小节我们先后学习了 Docker Overaly,Macvaln,Flannel,Weave 和 Calico 跨主机网络方案.目前这个领域是百家争鸣,而且还有新的方案不断涌现. 本节将从不同维 ...
- 第 8 章 容器网络 - 072 - 一文搞懂各种 Docker 网络
Docker 起初只提供了简单的 single-host 网络,显然这不利于 Docker 构建容器集群并通过 scale-out 方式横向扩展到多个主机上. 跨主机网络方案: Docker Over ...
- 072、一文搞懂各种Docker网络 (2019-04-17 周三)
参考https://www.cnblogs.com/CloudMan6/p/7587532.html 前面各个小节我们学习了 Docker Overlay .Macvlan .Flannel.We ...
- 【转帖】一文看懂docker容器技术架构及其中的各个模块
一文看懂docker容器技术架构及其中的各个模块 原创 波波说运维 2019-09-29 00:01:00 https://www.toutiao.com/a6740234030798602763/ ...
- 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)
前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...
- 一文了解Docker容器技术的操作
一文了解Docker容器技术的操作 前言一.Docker是什么二.Docker的安装及测试Docker的安装Docker的Hello world测试三.Docker的常见操作镜像的基本操作容器的基本操 ...
- 读懂 Deployment YAML - 每天5分钟玩转 Docker 容器技术(125)
既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似. 还是以 nginx-deploymen ...
随机推荐
- 1.Redis介绍和使用场景
(1)持久化数据库的缺点 平常我们使用的关系型数据库有Mysql.Oracle以及SqlServer等,在开发的过程中,数据通常都是通过Web提供的数据库驱动来链接数据库进行增删改查. 那么,我们日常 ...
- 二刷Redux笔记
关于react的一些思考 所有的数据全部先要发送给容器,然后容器负责接受数据单后再分发数据给他下面的组件,通过props来传递,一个页面就可以相当于一个容器,容器之中就会有很多子组件,一般组件只负责接 ...
- python的转义
print('"I\'m OK"') print("I'm OK") print('"I"\'m \"OK"') &qu ...
- 是时候扔掉cmder, 换上Windows Terminal
作为一个Windows的长期用户,一直没有给款好用的终端,知道遇到了 cmder,它拯救一个习惯用Windows敲shell命令的人. 不用跟我安利macOS真香!公司上班一直用macOS,一方面确实 ...
- css 盒模型、box-sizing 学习笔记
默认情况下,给元素设置的高度和宽度是元素内容区的宽度和高度,给元素加padding 和 border ,元素的实际宽度和高度的计算方式是下面的两个公式: 元素的宽度= 元素的内容区宽度 + 内边距宽度 ...
- WebSocket是什么,有什么作用和特点?
WebSocket是一种在单个TCP连接上进行全双工通信的协议. Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手.具有持久化的特性 特点: 保持连接状态.与HTTP ...
- Rocket - tilelink - fastProperty
https://mp.weixin.qq.com/s/9nikweQUGG5FO3Z8t6feaw 介绍Parameters中定义的fastProperty的实现.(使用最近的新版本,差别不大) ...
- Chisel3 - 接口方向(Direction)
https://mp.weixin.qq.com/s/36jreQGpDLCCNfmUwI34lA 模块接口有三种方向:Input/Output/Inout.Chisel在声明模块接口的时候,也需 ...
- 【Linux】CentOS 7安装与使用,安装jdk1.8,安装mysql
虚拟机软件VMware Workstation Pro 安装CentOS7,准备好镜像文件! 一定要勾选"启动时连接" 语言选英语 时区点击上海 确认硬盘,就是点击黄色警告的那个, ...
- Java实现 LeetCode 646 最长数对链(暴力)
646. 最长数对链 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面. ...
