Docker的安装使用. 1.  修改yum源到境内站点: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 执行 yum clean  yum makecache 操作 2. 关闭防火墙以及SElinux systemctl stop firewalld systemctl disable firewalld 关闭selinux  vim /etc/sysconfig/s…
iOS学习大神群-群号:483959373…
小伙伴们,好久不见,这几个月实在太忙,所以一直没有更新,今天刚好有空,咱们继续k8s的学习,由于我们后面需要深入学习Pod的调度,所以我们原先使用MiniKube搭建的实验环境就不能满足我们的需求了,我们这一节将使用kubeadm搭建Kubernets集群. 一.虚拟机创建 我们的集群包含三个节点kubevm1.kubevm2.kubevm3,其中kubevm1作为Master 我们首先需要使用Virtualbox创建一个虚拟机,步骤如下: 1.新建虚拟机 我们设置内存2G,硬盘20G,CPU…
容器之间可通过IP.Docker DNS Server或joined三种方式进行通信,今天我们来详细学习一下. 一.IP通信 IP通信很简单,前一篇中已经有所涉及了,只要容器使用相同网络,那么就可以使用IP进行访问,本节不做赘述. 二.Docker DNS Server 使用IP通信存在一个最大的问题就是容器的IP地址一般是随机的不固定的,所以导致这种方式不够灵活,对于这个问题,可以通过Docker自带的DNS服务器解决.这种方式使用也很简单,即启动容器时通过--name参数即可指定其域名.我们…
上一篇我们学习了容器的启动和常用的进入容器的方式,今天我们来看看如何控制容器起停以及容器删除操作. 一.stop.kill.start和restart stop.kill命令都可以停止运行的容器,二者不同之处在于,stop是先给容器中的进程发送SIGTERM信号,一段时间后在发送SIGKILL信号,这样可以让进程在退出前做一些善后工作,这样显得更加优雅,而kill命令则是直接杀掉容器中的进程. $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREA…
在上一篇中我们简单介绍了Docker镜像的获取与使用,其中在镜像制作中提到在实际使用中一定要用Dockerfile方式去创建镜像而不要用docker commit方式,那么我们该如何编写Dockerfile呢,在写Dockerfile时又有那些注意点呢?今天我们就来一起学习Dockerfile的编写. 一.什么是Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,其内容包含了一条条构建镜像所需的指令和说明. 二.从一个简单的例子开始 1.制作一个JDK镜像 我们首先通过制…
本篇主要对容器相关核心知识进行梳理,通过本篇的学习,我们可以对容器相关的概念有一个全面的了解,这样有利于后面的学习. 一.什么是容器? 容器是一种轻量级.可移植.自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行.开发人员在本地创建的容器几乎无需任何修改就可以在生产环境上运行. 容器 VS 虚拟机 既然容器是为应用程序提供封装与隔离,那为什么不用虚拟机呢?我们首先来看下二者的对比: 从上图可以很明显看出,虚拟机是需要创建完整的操作系统环境以实现应用程序完全隔离,而容器则是共享宿主…
kubectl作为我们主要的操作K8S的工具,其具备非常丰富的功能,但是如果不经过打磨,使用起来还是存在诸多不便,今天我们来看看如何将我们的kubectl打磨的更加易用. 一.命令自动补全 kubectl中提供非常多的命令,如果每一次都要手动一个字符一个字符的敲未免太累了,那么如何配置自动补全呢?这里以ubuntu系统为例: 1.安装auto-completion工具 $ sudo apt update Hit:1 http://archive.ubuntu.com/ubuntu bionic…
上一篇,我们学习了各种工作负载的使用,工作负载它会自动帮我们完成Pod的调度和部署,但有时我们需要自己定义Pod的调度策略,这个时候该怎么办呢?今天我们就来看一下如何定义Pod调度策略. 一.NodeSelector:节点定向调度 Kubernetes的Scheduler服务在调度Pod的时候会通过一系列复杂的算法自动计算出每一个Pod的最佳目标节点,但有的时候,我们需要将Pod指定的到一些Node上,比如我们有的Node安装了SSD,磁盘读写高,可以部署一些IO密集型应用,这个时候,我们就需要…
我们一般将应用部署在容器里面,而一个服务器上会有许许多多的容器,那么外界该如何访问我们的应用呢?答案是:端口映射. Docker可以将容器对外提供服务的端口映射到host的某个端口上,外网通过此端口访问容器,要开启此功能,容器在启动时需要通过-p参数指定映射的端口号. $ sudo docker run -d -p 80 nginx 0627d4b5aefe03d4d99a92b559d3e58d789c006961722178c9f1e94f0f270492 $ sudo docker ps…
我们在上一篇中介绍了Docker中三种网络,none.host和bridge,除了这三种网络,Docker还允许我们创建自定义网络,当我们要创建自定义网络时,Docker提供了三种网络驱动供我们选择:bridge.macvlan和overlay,其中macvlan和ovelay都是用于创建跨主机网络,我们后面在研究,本篇我们主要使用bridge驱动. 一.创建自定义网络 我们通过docker network create命令创建test_net1网络: $ sudo docker network…
本节我们来看看Docker网络,我们这里主要讨论单机docker上的网络.当docker安装后,会自动在服务器中创建三种网络:none.host和bridge,接下来我们分别了解下这三种网络: $ sudo docker network ls NETWORK ID NAME DRIVER SCOPE 528c3d49c302 bridge bridge local 464b3d11003c host host local faa8eb8310b4 none null local 一.none网络…
我们在启动Docker容器时,默认情况下容器所使用的资源是没有限制的,这样就会存在部分特别耗资源的容器会占用大量系统资源,从而导致其他容器甚至整个服务器性能降低,为此,Docker提供了一系列参数方便我们对容器的CPU.内存.IO等进行限制.为了方便演示,我们这里使用progrium/stress镜像,这个镜像内置一个压力测试工具,通过它我们可以很方便进行实验.首先我们拉取此镜像: $ sudo docker pull progrium/stress Using default tag: lat…
上一篇我们介绍了Dockerfile的基本编写方法,这一节我们来看看Docker容器的常用操作. 一.容器的运行方式 容器有两种运行方式,即daemon形式运行与非daemon形式运行,通俗地讲就是长期运行和短暂运行,当我们的容器作为对外服务的时候需要采用damon形式运行,当我们的容器仅仅作为一个临时的工作环境那么使用非daemon形式运行是比较恰当的. 首先先来看看以非daemon形式如何运行容器,比我们启动一个容器然后执行ls -a命令: $ sudo docker run ubuntu:…
前面的文章介绍过镜像的三种获取方式: 下载并使用别人创建好的镜像: 在现有镜像上创建新的镜像: 从无到有创建镜像. 本文主要介绍前两种. 一.下载镜像 在Docker Hub上有大量优质镜像可以使用,我们通过docker pull命令就能获取任何我们想要的镜像: $ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] docker pull命令使用可通过 docker pull --help 获取,我们简要说明下镜像名称和格式: Docker…
数据共享是volume的关键特性,今天我们来看一下通过volume实现容器与host.容器与容器之间共享数据. 一.容器与host共享数据 在上一篇中介绍到的bind mount和docker manage volume,它们都可以实现容器与host之间共享数据,只是方式有所区别,bind mount在容器启动前便指定了volume所在host数据目录,并挂载到容器中了,容器启动后,我们向此目录写入数据,容器也能使用这些数据,而对于docker manage volume,有所不同,它在容器启动…
Pod 是一组紧密关联的容器集合,它们共享IPC.Network和UTS namespace,是 Kubernetes 调度的基本单元.Pod 的设计理念是支持多个容器在一个 Pod 中共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务. 一.Pod的定义 这里还是以我们之前做的webapp为例定义一个Pod,这是一个最简单的Pod定义 apiVersion: v1 kind: Pod metadata: name: webapp labels: app: webap…
我们在部署应用时常常会考虑将应用程序与配置文件相分离,这样可以使应用程序更好的复用,并且通过不同配置也能实现更灵活的功能.将应用制作成镜像后,我们可以在启动容器时通过环境变量或挂载文件的方式注入,但是在面临大规模容器集群的场景下就显得力不从心了,因此我们可以使用ConfigMap进行统一配置. 一.ConfigMap介绍 ConfigMap是Kubernetes中的一种资源对象,用于将应用配置信息存储到键值对中,Pod在使用时,将其用作环境变量.命令行参数或者存储卷中的配置文件.通过Config…
Kubernetes在创建Pod时,会为Pod和容器设置一些额外的信息,比如Pod名称.Pod IP.Node IP.Label.Annotation.资源限制等,我们经常会在应用程序中使用到这些数据,比如利用Pod名称作为应用日志的字段,方便分析日志.为了能在容器内获取这些信息,我们可以使用Downward API机制来实现. Downward API可以通过环境变量和Volume挂载这两种方式将Pod信息注入容器,我们分别来看一下: 一.环境变量方式 我们还是以Busybox为例进行演示,我…
我们前面讲了很多关于Pod的使用,但是在实际应用中,我们不会去直接创建Pod,我们一般通过Kubernetes提供的工作负载(Deployment.DeamonSet.StatefulSet.Job等)完成对一组Pod全生命周期的控制,本节开始我们来看看这些工作负载是如何使用的. 一.Deployments Deployments可以自动部署一个容器应用的多个副本,监控其副本数量并始终维持这一数量.我们来创建一个Deployments看看: apiVersion: apps/v1 kind: D…
1.创建一个空目录 $ mkdir gittemp $cd gittemp $pwd //x显示当前目录 2.$ git init 把这个目录变成git可以管理的仓库 多的一个隐藏的.git 目录 可以用 ls -ah 查看 3.用notepad++ 创建一个.txt文件 用 $git add 把文件添加到仓库 用 $git commit -m "XXX" //XXX 历史版本更新描述 多次add不同的文件,比如: $git add file1.txt $git add file2.t…
最近一年在工作上经常使用Docker与K8S,除了利用其打镜像,部署服务外,还基于Docker与K8S开发了一套CICD流水线平台,为了加深相关知识点的理解,所以从今天开始会定期更新学习笔记,本套学习笔记前半部分会讲述Docker的使用,后半部分则是K8S的使用,过程中有任何错误之处还望各位大佬指正哈​. 所谓工欲善其事,必先利其器,我们首先来学习下Docker的安装过程. ​PS:我这边安装了Ubuntu 18.04 server版虚拟机,然后在虚拟机中安装Docker. Docker​有三种…
在上一篇<基本概念快速一览>中,我们把基本的一些概念快速地简单地不求甚解地过了一下,本篇开始我们会将ASP.NET Core WebAPI部署到K8S,从而结束初探的旅程. Section 1 - ASP.NET Core on K8S学习初探(1)K8S单节点环境搭建 Section 2 - ASP.NET Core on K8S学习初探(2)K8S基本概念快速一览 Section 3 - ASP.NET Core on K8S学习初探(3)部署API到K8S 一.准备一个WebAPI 这里…
k8s学习 - API 之前对k8s并没有很深入的了解,最近想把手头一个项目全部放到k8s上,以方便部署,需要研究.这里记录一下自己研究过程中头脑中的理解. k8s 和 docker 首先,需要先理解下docker.镜像把你要的应用和环境打包在一个容器里面,有了容器之后,部署,扩容等操作就很方便了.但是,随着微服务化,服务一多,容器就多了,多了之后,就需要对容器进行管理.需要有一套很完善的管理系统.那么 k8s 就出现了. k8s 全称就是kubernets,和 i10n 的名字类似,中间的数字…
k8s学习 - 概念 - master/node 在k8s中,有各种各样的概念和术语.这些概念是必须要学习和掌握的.我们先罗列下所有概念,然后再一个个看具体实例. 大概说一下这些概念: Master: k8s的主控组件,对应的对象是node. Node: 是k8s集群的机器节点,相当于master-node.一个node就对应一个具体的物理机或者虚拟机. Container: 是一个镜像容器,一个container是一个镜像实例 Pod: 是k8s集群的最小单元,一个pod可以包含一个或者多个c…
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 第一章:Docker与k8s的恩怨情仇(一)-成为PaaS前浪的Cloud Foundry 第二章:Docker与k8s的恩怨情仇(二)-用最简单的技术实现"容器" 第三章:Docker与k8s的恩怨情仇(三)-后浪Docker来势汹汹 第四章:Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕 第五章:Docker与k8s的恩怨情仇(五)--Kubernetes的创新 第六章:Dock…
本文来源:鲜枣课堂 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫"dotCloud"的公司. 这家公司主要提供基于PaaS的云计算技术服务.具体来说,是和LXC有关的容器技术. LXC,就是Linux容器虚拟技术(Linux container) 后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为--Docker. Docker技术诞生之后,并没有引起行业的关注.而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰. 正当他们快要…
0x00  Kubernetes简介 Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践. K8S在Docker容器技术的基础之上,大大地提高了容器化部署应用简单高效.经过几年的快速发展,K8S已经成为建设容器云平台的首选方案. 2015年7月,Kubernetes v1.0正式发布,截止到2018年6月28日最新稳定版本是v1.11. 该版本发布主要增加了备受关注功能,分别为:基于IPVS的集群内负载…
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技术概念和应用场景 虚拟化,一是项技术--,是一种资源解决方案. 虚拟化技术是将物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,使计算元件运行在虚拟的基础上,而不是真实的物理资源上. 通过虚拟化技术,可以将物理资源转变为逻辑资源(虚拟机),应用程序服务运行在虚拟资源上,而不是真实的物理机…