容器

学习k8s(三)

喜你入骨 提交于 2020-01-15 11:09:46
一、Kubernetes核心概念 1、Kubernetes介绍 Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。 使用Kubernetes可以: 自动化容器的部署和复制 随时扩展或收缩容器规模 将容器组织成组,并且提供容器间的负载均衡 很容易地升级应用程序容器的新版本 提供容器弹性,如果容器失效就替换它,等等... 实际上,使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群: $ kubectl create -f single-config-file.yaml kubectl是和Kubernetes API交互的命令行程序。现在介绍一些核心概念。 2、集群 集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了Kubernetes平台。下图展示这样的集群。注意该图为了强调核心概念有所简化。这里可以看到一个典型的Kubernetes架构图。 上图可以看到如下组件,使用特别的图标表示Service和Label: Pod Container(容器) Label( )(标签)

docker删除所有容器/镜像

吃可爱长大的小学妹 提交于 2020-01-15 08:19:25
1. 想要删除容器,则要先停止所有容器(当然,也可以加-f强制删除,但是不推荐): docker stop $(docker ps -a -q) 2. 删除所有容器 docker rm $(docker ps -a -q) 3.删除所有镜像(慎重) docker rmi $(docker images -q) 来源: CSDN 作者: jiangjiane 链接: https://blog.csdn.net/jiangjiang_jian/article/details/103764684

Docker技术基础

不打扰是莪最后的温柔 提交于 2020-01-15 06:16:29
1、Docker技术基础 对进程做隔离。隔离CPU和内存,限制命名空间 Docker是分层的 Containerd是核心组件 Docker Client实现到Docker Engine之间通信   主要关注:     containers     images     networks   RunC负责容器应用程序的运行   容器里跑的程序都是前台程序,不能是后台程序 Docker联合文件系统(Union Filesystem)-overly2 Docker Images用来运行Docker容器 DockerFile自动创建Docker镜像   命令大写:     FROM     RUN     WORKDIR     COPY     CMD 特性 :Docker对资源(cpu、memory、network、storage)细粒度划分,秒起秒开 2、Docker深入理解 镜像管理:   Harbor镜像中心   Docker Registry实现对容器的管理   每个镜像都是一个tar包 Docker容器网络模式:     主机模式   网桥模式 Docker容器跨主机模:   VXLAN模式 问题一:容器地址重复   Flannel解决方案:     中心化容器地址分配,Etcd配置存储服务 问题二:容器地址不可达   Flannel解决方案:     方案一:覆盖网络

STL之map容器和multimap容器

时光总嘲笑我的痴心妄想 提交于 2020-01-15 05:18:20
摘要:本文主要介绍了map容器和multimap容器的相关内容。 1、基本概念 1.1 Map的特性 所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。 1.1 map容器的键值无法修改 map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。如果想要修改元素的实值,那么是可以的。 Map和list拥有相同的某些性质,当对它的容器元素进行新增操作或者删除操作时,操作之前的所有迭代器,在操作完成之后依然有效,当然被删除的那个元素的迭代器必然是个例外。 1.2 Multimap容器 Multimap和map的操作类似,唯一区别multimap键值可重复。 Map和multimap都是以红黑树为底层实现机制。 2、常用的API API 意义 构造函数 map<T1, T2> mapTT map默认构造函数 map(const map &mp) 拷贝构造函数 赋值操作 map& operator=(const map &mp) 重载等号操作符 swap(mp) 交换两个集合容器 大小操作 size() 返回容器中元素的数目 empty() 判断容器是否为空 插入数据元素操作 map.insert(...); //往容器插入元素,返回pair

Docker安全管理(实战!!!)

僤鯓⒐⒋嵵緔 提交于 2020-01-15 02:22:41
Docker安全 Docker与虚拟机的区别 隔离与共享 虚拟机通过添加 Hypervisor 层,虚拟出网卡、内存、CPU 等虚拟硬件,再在其上建立 虚拟机,每个虚拟机都有自己的系统内核 Docker 容器则是通过隔离的方式,将文件系统、进程、设备、网络等资源进行隔离,再对权限、CPU 资源等进行控制,最终让容器之间互不影响, 容器无法影响宿主机。容器与宿主机共享内核、文件系统、硬件等资源。 性能和损耗 与虚拟机相比,容器资源损耗要少。 同样的宿主机下,能够建立容器的数量要比虚拟 机多。 但是,虚拟机的安全性要比容器稍好,要从虚拟机攻破到宿主机或其他虚拟机,需要 先攻破 Hypervisor 层,这是极其困难的 而 docker 容器与宿主机共享内核、文件系统等资源, 更有可能对其他容器、宿主机产生影响。 Docker存在的安全问题 Docker自身漏洞 作为一款应用 Docker 本身实现上会有代码缺陷。CVE官方记录Docker历史版本共有超过20项漏洞。 -骇客常用的GJ手段主要有代码执行、权限提升、 信息泄露、权限绕过等。目前 Docker 版本更迭非常快,Docker 用户最好将 Docker 升级为 最新版本。 Docker源码问题 1)骇客上传恶意镜像 如果有骇客在制作的镜像中植入病毒、后门等恶意软件,那么环境从一开始就已经不安全了,后续更没有什么安全可言。 2

Docker容器之镜像管理、端口映射、容器互联

家住魔仙堡 提交于 2020-01-15 00:58:24
docker镜像的分层  Dockerfile 中的每个指令都会创建一个新的镜像层;  镜像层将会被缓存和复用;  当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效;  某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效;  镜像层是不变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然包含该文件 docker镜像 是应用发布的标准格式 可支撑一个docker容器的运行 docker镜像的创建方法 基于已有镜像创建 基于本地模板创建 基于dockerfile创建 基于已有镜像创建 将容器里面运行的程序及运行环境打包生成新的镜像 docker commit [选项] 容器ID/名称 仓库名称:[标签] -m:说明信息 -a:作者信息 -p:生成过程中停止容器的运行 基于本地模板创建 通过导入操作系统模板文件生成新的镜像 使用wget命令导入为本地镜像 导入成功后可查看本地镜像信息 基于 Dockerfile 创建 Dockerfile 是由一组指令组成的文件 Dockerfile 结构的四部分: 基础镜像信息; 维护者信息; 镜像操作指令; 容器启动时执行指令; 使用 Dockerfile 创建镜像并在容器中运行 dockerfile操作指令 指令 含义 FROM 镜像 指定新镜像所基于的镜像

Docker--DockerFile体系结构(保留字指令详解)

耗尽温柔 提交于 2020-01-15 00:36:02
DockerFile体系结构 FROM 基础镜像,当前新镜像是基于那个镜像的 MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 容器构建时需要运行的命令 EXPOSE 当前容器对外暴露出的端口 WORKDIR 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点 ENV 用来在构建镜像过程中设置环境变量 例如:ENV MY_PATH /usr/mytest 这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样; 也可以在其它指令中直接使用这些环境变量,比如:WORKDIR $MY_PATH ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 COPY 类似ADD,拷贝文件和目录到镜像中。 将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置 COPY src dest COPY [“src”, “dest”] VOLUME 容器数据卷,用于数据保存和持久化工作 CMD 指定一个容器启动时要运行的命令。 DockerFIle中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。 ENTRYPOINT 指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是用于指定容器启动程序及参数。(不会被替换,追加) ONBUILD

springMVC笔记

时光毁灭记忆、已成空白 提交于 2020-01-14 23:37:36
配置方式1: 编写web.xml 第一段:配置监听器,当web容器启动时,会调用这个监听器中的方法,会加载spring容器,使程序具备spring环境。 第二段:指定监听器要读取的配置文件路径,也就是spring环境启动时要读取的配置文件,里面可以指定各种各样的bean。 第三段:配置springMVC中最重要的dispatchServlet,用于分发请求。这本质就是配置一个servlet,普通servlet在第一次请求时才被初始化,而这个dispatcherServlet配置了load-on-startup,即容器启动时就会初始化这个servlet。 第四段:配置/app下的所有请求都由某个servlet来处理,这里依据名字指定为之前配置的dispatcherServlet。 配置方式2 写这样一个类 web容器会通过SPI来加载并使用这个类,onStartUp方法会被触发,参数代表了web容器的上下文,接着通过配置类的形式加载spring环境,最后再配置dispatcherServlet。 以上两种方式都能实现一样的效果,能完成springMVC的配置。 来源: https://www.cnblogs.com/hellohello/p/12194314.html

C++ STL vector容器 简单实用整理

半城伤御伤魂 提交于 2020-01-14 23:31:01
一、什么是vector? 1.1 介绍: vector 是c++中stl库里的一个容器,实质就是一个 长度未定的数组 ,而且他还有一些常用操作“封装”在了vector类型内部。 1.2 举例说明: vector是一个模板类,所以需要用vector< int > a或者vector< double > b来声明一个vector,并且要引用#include< vector >头文件。 vector< int > a是声明了一个长度可变的int型数组a,类似于int a[]的整数数组,同理vector< string > a类似于string a[]的字符串数组。 二、如何使用vector? 2.1 头文件: #include< vector > 2.2 声明数组: # include <iostream> # include <vector> using namespace std ; int main ( ) { vector < int > a ; //声明了一个长度未知的int型数组a vector < double > b ; //声明了一个长度未知的double型数组b return 0 ; } 2.3 vector中封装的便捷操作: 假如a是一个vector,可以用a.size()读取他的大小;a.resize()改变大小;a.p ush_back()向尾部添加元素;a

docker

北城以北 提交于 2020-01-14 19:41:58
docker 解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。 Docker本时是一个容器运行载体或称之为管理引擎。打包好的运行环境就是镜像文件,通过镜像文件才能生成Docker容器。 Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。 Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。 仓库(Repository)是集中存放镜像文件的场所。 重要操作命令: 1、启动容器并进入:docker run -it ubuntu /bin/bash 2、后台运行容器:docker run -itd --name ubuntu-test ubuntu /bin/bash 3、进入容器:docker exec -it 容器ID /bin/bash 4、导出容器:docker export 容器ID > ubuntu.tar 5、导入容器:cat docker/ubuntu.tar | docker import - test/ubuntu:v1 6、删除容器:docker rm -f 容器ID 7、停止:docker stop 容器ID 8、重启:docker restart 容器ID 9、查看容器:docker ps -a 10