云原生之Docker容器安装以及入门【Docker部署web应用&&云原生基石】

一.前言

1.1Docker 是什么?

Docker 是一个应用打包、分发、部署的工具。

基本就是一个轻量的虚拟机。虚拟机里只有我们需要的东西,其他多余的东西是必要的。

我们看下图,来看一下它和普通的虚拟机对比图:如下:
在这里插入图片描述

1.2 打包、分发、部署概念理解

打包:把软件开发的需要的编译环境,依赖,第三方库什么的,把他们打包到一起,搞成一个包。

分发:可以把“”包”上传镜像仓库,别人可以方便的获取和安装,提高了效率。

部署:无论是什么操作系统,只要有“包”,就可以用一个简单的命令来运行起来,自动模拟一样的环境,非常的方便。

1.3 优势/解决问题

想起来一个事情哈,之前我在接外包项目的时候,因为是接手别人的项目,因为环境,依赖等等问题耗费了十多天才成功的跑起来,而且在开发完成之后,重新部署到服务器上也出现的非常严重的问题,以至于现在也解决不了那个bug。

上面的事情很头痛是吧,如果我们采用Docker 开发部署。这个问题就不存在了。

优点:确保了不同机器上跑都是一致的运行环境,不会出现我机器上跑正常,你机器跑就有问题的情况。

重要概念:镜像、容器

镜像:和软件安装包类似,可以快速的传播和安装。

容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。

二.安装Docker

2.1 安装

我们点击下面的链接,进入官方,进行下载安装:

https://www.docker.com/products/docker-desktop

选择直接电脑合适的版本安装->

我这里是安装的桌面版。

下载完成后,打开安装:

安装好之后,需要注意一点:

安装完成之后需要重新启动电脑,记得保存文件,我忘记保存了被强制重启了?。

2.2报错解决:

如果遇到了以下错误,请去我的主页搜索关键字进行阅读该文章解决问题:

第一个错误:

WSL 2 installation is incomplete.

在这里插入图片描述

第二个错误:

System.InvalidOperationException: Failed to set version to docker-desktop: exit code: -1

在我的主页搜索关键字阅读该文章即可:

WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】

点击进去阅读,即可解决上面俩个报错。

三,设置国内镜像源

3.1 国内镜像源地址

镜像加速器

镜像加速器地址

Docker 中国官方镜像

https://registry.docker-cn.com

DaoCloud 镜像站

http://f1361db2.m.daocloud.io

Azure 中国镜像

https://dockerhub.azk8s.cn

科大镜像站

https://docker.mirrors.ustc.edu.cn

阿里云

https://<your_code>.mirror.aliyuncs.com

七牛云

https://reg-mirror.qiniu.com

网易云

https://hub-mirror.c.163.com

腾讯云

https://mirror.ccs.tencentyun.com

3.2 镜像加速配置方式

在解决完上文的BUG之后,我们成功的打开了Docker(如下图),我们点击设置:

将下面的代码块替换到上面方框中。

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn/",
    "https://1rlt72n0.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://reg-mirror.qiniu.com",
    "https://dockerhub.azk8s.cn",
    "https://mirror.ccs.tencentyun.com"
  ]
}

点击这里重启应用。

四,结尾

到了这里,我们的Docker部署安装已经全部完成了,下节我们记录,如何用Docker快速安装软件!

本文转载于网络 如有侵权请联系删除

相关文章

  • 云端新趋势 混合多云下的按需计费

    从萌芽到壮大,云计算产业已经走过了整整16年,特别是以数字经济为代表的爆发式需求,直接驱动了云计算的高速增长。如今,几乎所有的行业和企业都已经开始接受云计算,并享受云计算带来的红利。当企业上云成为趋势,企业从业务需求角度重新衡量云与业务的关系之后,一个新的共识逐渐形成:上云并不是目的而是提升业务创新和效率的方式,公有云也并不是万能的,用合理的方式上云,才是一条正确的路径。这也是今天混合多云架构兴起的关键原因。Gartner数据显示,2020年之后将有超过90%的组织利用混合云构建基础设施,这也意味着混合多云的环境将是未来企业基础架构的“新常态”,一个混合多云的时代正在向我们走来。值得注意的是,企业走向混合多云的旅程并非是“一蹴而就”的,往往需要灵活的混合部署、简易的管理与运维、以及创新的付费模式来满足其演进需求。日前,由CIO时代、新基建创新研究院与戴尔科技集团共同发起的主题为“云端新趋势混合多云下的按需计费”的线上直播,邀请相关技术专家做客直播间,通过分析案例、启迪思路,共同探寻企业全面云化的新趋势和新价值。http://mpvideo.qpic.cn/0b2egmaagaaanaa

  • 产品经理的流程总是变,所以我搬出了大杀器状态机模式

    大家好,今天给大家介绍一个新的设计模式,这个设计模式非常重要,在我们日常的开发工作当中经常使用。它就是大名鼎鼎的状态机模式。状态机模式非常适合用在复杂的流程或者是系统当中,可以方便我们对系统的某一个状态进行抽象,这会让我们编码具有更强的可读性以及延展性。有向图与DAG首先和大家解释一下状态机当中这个状态的概念,这里的状态指的是我们系统或者是流程当中的某一个状态。我用我之前做过的一个活动系统来给大家举一个例子。比如我们现在要在网上举办一些活动,然后吸引用户来参与。但是在用户来参与活动的过程当中其实有很多的状态需要判断,比如说我们首先要判断用户是否已经登录了。如果登录了,还需要判断用户之前是否报名过,如果已经报名了,还需要判断活动是否开始了等等。那么,我们就可以抽象出很多的状态。比如是否登录、是否报名、未登录等等这些都是状态。这些状态之间可以通过一些条件进行转移,比如在初始状态当中,通过判断用户是否登录选择转移到未登录状态或者是报名判断的状态上。我们把这其中的逻辑抽象出来,可以得到这么一张有向无环图。几乎所有的固定流程都可以抽象出这么一张图来,这种图一般被缩写成DAG(DirectedAc

  • 全栈必备 Java 基础

    参考链接:Java平台如何独立那一年,从北邮毕业,同一年,在大洋的彼岸诞生了一门对软件业将产生重大影响的编程语言,它就是——Java。1998年的时候,开始学习Java1.2,并在JavaOrbix上做服务,而如今Java9已经来了,而且Java10也已经不远了。 对一个全栈而言,Java是必备的编程语言之一。而谈到Java,虽万语千言却不知从何开始,老码农从个人的角度看一下Java语言的编程基础。 虚拟机 Java真正牛X的地方就在于JVM。JVM是一个抽象的计算机,具有指令集、寄存器、垃圾回收堆、栈、存储区、类文件的格式等细节。所有平台上的JVM向上提供给Java字节码的接口完全相同,但向下提供适应不同平台的接口,规定了JVM的统一标准并实现了Java程序的平台无关性。这就是常说的,Java的跨平台,但跨越不同实现的JVM时还是有些许不同的。 JVM是运行java程序的核心虚拟机,而运行java程序不仅需要核心虚拟机,也需要其他的类加载器,字节码校验器以及大量的基础类库。JRE除了包含JVM之外还包含运行Java程序的其他环境支持。 当JVM启动时,由三个类加载器对类进行加载: b

  • 与制造业大师对话

    我的朋友尼克(NickPinkston)便是人们口中所说的“制造业大师”,他的远见卓识更是赋予他以不凡的眼光去看待一个全新且完全不同的产业生产生态系统。尼克土生土长于美国匹茨堡(Pittsburgh)——曾是金属制造业的核心城市,而如今他却生活在旧金山(SanFrancisco)这个创客运动正如火如荼地开展的地方。这激烈的景象也正是复兴美国制造业源源不断之动力的源泉,但同时,这个时代也更多地将注意力放在对手工业技艺、技巧的关注上。和尼克相比,我却不是个顺应潮流的人,当我仍把注意力放在虚无缥缈的协同设计领域时,他就已经脚踏实地地立足于工业领域了——而我也为他的远见卓识而深深着迷。只要一有机会,我就会从和他的谈话中汲取每一滴智慧的琼浆,而现在我很乐意取之精华并与你们分享。Q那么是什么在引领制造业的转型呢?所有的一切都脱不开3D打印技术吗?答:“硬件就是新的软件。”也就是说如今的硬件就如同40年前的软件。其实,传统制造业在过去100年中的改变微乎其微——这就好比当年的大型计算机还需要大批的程序员和操作员加以运行,但现在你看,一切都已经不同了。而这些真正要着手开始做出的改变以及那些所谓的“转机

  • SpringBoot Swagger框架

    本文标识:Jsbt0004本文编辑:Jack风编程工具:IDEA阅读时长:6分钟:::tipSwagger描述和测试API接口,自动生成API接口文档。:::为了方便上面的API接口调试,我们可以使用: Postman:模拟POST请求Swagger:描述和测试API接口1、添加依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>复制2、S

  • 【PAT乙级】微博转发抽奖

    版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weixin_42449444/article/details/86755783题目描述:小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包。请你编写程序帮助他确定中奖名单。输入描述:输入第一行给出三个正整数M(≤1000)、N和S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从1开始)。随后M行,顺序给出转发微博的网友的昵称(不超过20个字符、不包含空格回车的非空字符串)。注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。输出描述:按照输入的顺序输出中奖名单,每个昵称占一行。如果没有人中奖,则输出Keepgoing...。输入样例1:932 Imgonnawin! PickMe PickMeMeMeee LookHere Imgonnawin! TryAgainAgain TryAgainAgain Imgonna

  • [javaEE] 反射-通过反射了解集合泛型本质

    java中的泛型是防止错误输入的,只在编译时刻起作用packagecom.tsh.reflect; importjava.lang.reflect.Method; importjava.util.ArrayList; publicclassReflectDemo{ publicstaticvoidmain(String[]args){ ArrayListlist=newArrayList(); ArrayList<String>list2=newArrayList<String>(); list.add("tsh"); list.add(2); list2.add("tsh"); //list2.add(2);//直接编译不通过,会报错 //泛型检测只是在编译时刻才会有,绕过编译时刻,就不存在泛型了 Classc2=list2.getClass(); try{ Methodm=c2.getMethod("add",Object.class); m.invoke(list2,2);//绕过编译

  • loadrunner 脚本开发- web_url函数详解

    by:授客QQ:1033553122加载指定url的web页面(GET请求)C语言函数intweb_url(constchar*StepName,constchar*url,,[EXTRARES,,]LAST);java语言intobject.url(StringstepName,Stringurl,String[]argumentList);ArgumentDescriptionobjectWebApi类型的对象表达式。对于Java和VB来说,通常是WebStepName图形脚本中的step标签。如果开启了AutomaticTransactions(自动化事务),则它同时也是事物名称。URL需要加载的Web页面的URL(UniformResourceLocator),格式为:"URL= "。ListofAttributes属性列表EXTRARES划界参数,标识下一个参数将是资源列表.ListofResourceAttributes资源属性列表LAST标识参数列表结束的标记。web_url仅在VuGen处于URL-basedscript或者勾选Ascriptcont

  • 我叫Tomcat:一款web服务器

    Tomcat,从这里开始 如何将我们的Java代码,运行在网络上,初学时,首先接触到的一般都是Servlet以及Jsp(或略过Jsp)而Tomcat就是这两者的容器,帮你处理动态网页部分(一)从哪来,到哪去?(1)Tomcat和它的小伙伴JBoss:Redhat红帽,支持所有的JavaEE规则,适合大型项目,收费Weblogic:Orcale,支持所有JavaEE规则,适合大型项目,收费Websphere:IBM,支持所有JavaEE规则,适合大型项目,收费Resin:Caucho,支持所有JavaEE规则,应用趋于广泛而我,我叫汤姆猫(Tomcat),来自Apache基金组织,可能因为我开源且免费,算是应用比较广泛的web服务器了,不过天下没有白吃的午餐,我仅仅支持少量的javaEE规范(Servlet/Jsp等)所以中小型项目,在我这里跑的比较多(2)Tomcat用来做什么?1、做Servlet等的容器比如现存一个搜索引擎,我们将它看成一个完整的web项目,它基于http协议中的请求和响应,我输入一些内容查询,而它接收到了这个请求后,简单的认为,背后有一个Servlet(一些应用于

  • JavaScript设计模式之单例模式

    单例模式系统中被唯一使用,一个类只有一个实例。实现方法一般是先判断实例是否存在,如果存在就返回,不存在就创建再返回。 在JavaScript里,单例作为空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。 模式作用:模块间通信系统中某个类的对象只能存在一个保护自己的属性和方法注意事项:注意this的使用闭包容易造成内存泄漏,不需要的赶快干掉注意new的成本代码示例java中的单例模式 java请类型可以私有化,外部new就会报错。JavaScript中的单例模式 classSingleObject{ login(){ console.log('login') } } //利用闭包实现了私有变量 SingleObject.getInstance=(fucntion(){ letinstance returnfunction(){ if(!instance){ instance=newSingleObject() } returninstance } })() letobj1=SingleObject.getInstance() obj1.logi

  • Hades:移动端静态分析框架

    只有通过别人的眼睛,才能真正地了解自己——《云图》HadesLogo背景作为全球最大的互联网+生活服务平台,美团点评近年来在业务上取得了飞速的发展。为支持业务的快速发展,移动研发团队规模也逐渐从零星的小作坊式运营,演变为千人级研发军团协同作战。在公司蓬勃发展的大背景下,移动项目架构也有了全新的演进方向:需要支持高效的集成策略,支持研发流程自动化等等,最终提升研发效能,加速产品迭代和交付能力。虽然高效的研发交付体系帮助App项目缩短了迭代周期,但井喷式的模块发版和频繁的项目集成,使得纯人工的项目维护和质量保证变得“独木难支”。静态分析需求上图漫画中,列举了大型项目在持续优化和维护过程中较为常见的几类需求。这些需求主要包括以下几个方面:在CI流程中加入静态准入检查,避免繁琐的人工Review以及减少人工Review可能带来的失误。为了推进项目的优化过程,需要方法数监控、宏定义分析等代码分析报表和监控。零PV报表、依赖分析和头文件引用规范、无用代码分析等项目优化方案。不难发现,这些需求的本质是:借助代码静态分析能力,提升项目可持续发展所需要的自动化水平。针对C/Objective-C主流的静

  • 大坑记录 - shell脚本删除操作

    背景jenkins执行去执行shell命令,其中引用了一些jenkins的变量,如${WORKSPACE}这种,因为每次执行jenkins比较慢,于是想复制脚本出来想本地调试一下,直接复制了脚本过来执行,结果又这么一句rm-rf${WORKSPACE}/*复制用root去执行,结果就崩盘了,发现删除了系统文件和目录,当终止的时候,已经来不及了分析由于${WORKSPACE}不存在,就是空了的,所以命令基本上就是rm-rf/*然后就爆炸了,哎,只能找运维帮忙修复了的后记1.权限控制,尽量不要用root,尤其是删除操作;2.删除逻辑加入判断,判断目录是否存在,如下:#!/bin/bash pwd cd${WORKSPACE} pwd if[!${WORKSPACE}];then exit-1; echo"${WORKSPACE}不存在" else echo"存在" fi复制

  • 8.函数式接口

    函数式接口概念:一个接口中的抽象方法只有一个,那么这个接口就是一个函数式接口。 1、通过注解检测一个接口是否是一个函数式接口: @FunctionalInterface 在接口上直接加上注解,如果这个接口是一个函数式接口则不报错,否则编译报错 2、作用: (1)是Lambda表达式的使用前提 (2)概念层面,为了表示接口就代表这个抽象方法,所以将名起为函数式接口 内置函数式接口在jdk8之后,官方定义了一些常用的函数式接口,如果以后需要使用类似的接口,直接使用即可,不需要再单独定义。 分类: Consumer:消费型接口 voidaccept(Tt) Supplier:供给型接口 Tget() Function<T,R>:函数型接口 Rapply(Tt) Predicate:断言型接口 booleantest(Tt); 消费型接口接口名称:Consumer 抽象方法:voidaccept(Tt):消费一个参数数据 概述:该接口中的方法可以接收一个参数,接收的参数类型由泛型指定,对参数的操作方式根据该接口的实现类决定,不需要返回值。 拓展的非抽象方法: defaultCons

  • 【原创】MyEclipse反编译添加jadclipse_3.3.0 曲折的完美解决

    本人QQ:9715234(java屌丝一枚) 共三部分 一.下载两个文件exe和jar 1.http://nchc.dl.sourceforge.net/project/jadclipse/jadclipse3.3/3.3.0%20%28for%20Eclipse%20_%3D3.3M6%29/net.sf.jadclipse_3.3.0.jar在这个地址下载jad的eclipse插件,下载的是一个jar文件,可能myeclipse的版本不一样需要对应的eclipse版本的jar文件,http://jadclipse.sourceforge.net/wiki/index.php/Main_Page,可以去这里了解详细情况 2.http://www.varaneckas.com/sites/default/files/jad/jad158g.win.zip,下载jad主程序,不同的操作系统主程序不一样,这里以windows为例,如果需要下载别的操作系统的程序可以前往:http://www.varaneckas.com/jad了解详细情况(第一个网址如果不行,就点击后者的连接,温

  • 使用whistle进行线上移动端调试

    whistle whistle基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能 使用移动端线上调试流程 安装和使用环境是mac 安装whistle sudonpminstall-gwhistle 常用命令 启动whistle:$w2startNote:如果要防止其他人访问配置页面,可以在启动时加上登录用户名和密码-nyourusername-wyourpassword。 重启whsitle:$w2restart 停止whistle:$w2stop 调试模式启动whistle(主要用于查看whistle的异常及插件开发)?w2run 配置代理 Mac:SystemPreferences>Network>A

  • arcgisRuntime for Android加载无效证书的https请求

      arcgisserver10.8在部署的时候开启了https,服务绑定了域名但是没有有效的证书,arcgisRuntimeforAndroid在加载gisserver的时候会报错,如下图所示:     只需要在场景初始化之前执行即可,代码如下: AuthenticationManager.setTrustAllSigners(true);复制  

  • 结对-四则运算生成器-设计文档

    项目名称:四则运算生成器 成员:安泽鹏,王梓晗 使用工具:python 功能:选择自己想挑战的加、减、乘、除,然后软件随机出题,然后答题后,判断对错出现答案,然后可以选择继续还是退出。 说明:初步先设计框架,想好要从哪里下手。然后一步一步进行写代码。先从选择在随机出题在判断等等。

  • Jetty容器配置https

    ConfiguringtheJettyContainerasaHttpsConnector Jetty版本:9.2.22.v20170606 Pom.xml <?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">   <modelVersion>4.0.0</modelVersion>     <groupId>learnJetty</g

  • 指令获取本地无线密码

    netshwlanshowprofiles netshwlanshowprofilename=""key=clear复制  

  • CentOS7之yum仓库配置

    操作系统版本:CentOSLinuxrelease7.2.1511(Core) Yum软件版本:yum-3.4.3-132.el7.centos.0.1.noarch Yum主配置文件:/etc/yum.conf 资源库配置文件:/etc/yum.repos.d  PS:这里我主要介绍的是通过挂在系统镜像文件和指定网络epel镜像源。 一、指定本地光盘作为yum仓库 1.首先挂载光驱,然后新建目录并进行挂在操作,建议删除/etc/yum.repos.d下面的文件,如下所示: [root@node01/]#mkdircentos7 [root@node01/]#mount/dev/cdrom/centos7/ 复制 2.然后切换到/etc/yum.repos.d目录下面创建一个repo文件,如下所示: [root@node01/]#cd/etc/yum.repos.d/ [root@node01yum.repos.d]#vimcentos7.repo [centos7] name=centos7 baseurl=file:///centos7

  • Nginx

    一、相关指令 1、启动指令 在/usr/local/nginx/sbin目录下执行./nginx 2、关闭指令 在/usr/local/nginx/sbin目录下执行./nginx-sstop 3、重新加载指令 在/usr/local/nginx/sbin目录下执行./nginx-sreload 复制 二、配置文件 1.全局块 从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组)、允许生成的workerprocess数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。 比如:worker_processes1; 这是Nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约 复制 2.events块 影响Nginx服务器与用户的网络连接 比如worker_connections1024;支持的最大连接数为1024 复制 3.http块 1、http全局块 http全局块配置的指令包括文件引入、MIME-TY

相关推荐

推荐阅读