一年内的新目标

以下为方便自己理解所做记录

1、可持续集成

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

Docker

what / why is docker

Docker消除了重复的、平凡的配置任务,并在整个开发生命周期中用于快速、简单和可移植的应用程序开发—桌面和云。Docker全面的端到端平台包括UI、CLI、API和安全性,它们在整个应用程序交付生命周期中协同工作。

docker engine

Docker 引擎是用来运行和管理容器的核心软件

在这里插入图片描述
Docker 首次发布时,Docker 引擎由两个核心组件构成:LXC 和 Docker daemon。

Docker daemon 是单一的二进制文件,包含诸如 Docker 客户端、Docker API、容器运行时、镜像构建等。

LXC 提供了对诸如命名空间(Namespace)和控制组(CGroup)等基础工具的操作能力,它们是基于 Linux 内核的容器虚拟化技术。

随着时间的推移,Docker daemon 的整体性带来了越来越多的问题。难于变更、运行越来越慢。这并非生态(或Docker公司)所期望的。

拆分工作随之展开,所谓良好的产品,总会有一套准心思想做支持,docker,如其名,容器生态,就是他们的思想。
在这里插入图片描述

docker image

docker镜像,可以对比理解为 class类 ,因为他们都一个相同的机制,就是可以基于本镜像做二次制作镜像(继承),镜像本身也可是基于其他镜像制作的。拆分复用思想
在这里插入图片描述
其中“底层镜像”是可以供所有镜像使用的,即,在实际使用过程中,非常基础的镜像,几乎所有镜像都用到的话,那么这个基础镜像在仓库中只需要保存一份即可,他可以被复用,叠加到其他镜像当中去
在这里插入图片描述
镜像的拉取:一般是从自建的仓库或者官方仓库中拉取,格式为docker image pull <repository>:<tag>仓库地+镜像名:tag就能唯一定位一个镜像,标签一般为版本号,latest(一般含义为最新的版本,但并不保证)
所有的 Docker 镜像都起始于一个基础镜像层,他们都是叠加的。如下图所示
在这里插入图片描述
下图中展示了一个稍微复杂的三层镜像,在外部看来整个镜像只有 6 个文件,这是因为最上层中的文件 7 是文件 5 的一个更新版本。
在这里插入图片描述
在这里插入图片描述
docker镜像命令

docker image pull是下载镜像的命令。镜像从远程镜像仓库服务的仓库中下载。

默认情况下,镜像会从 Docker Hub 的仓库中拉取。

docker image pull alpine:latest命令会从 Docker Hub 的 alpine 仓库中拉取标签为 latest 的镜像。

docker image ls列出了本地 Docker 主机上存储的镜像。可以通过 --digests 参数来查看镜像的 SHA256 签名。

docker image inspect命令非常有用!该命令完美展示了镜像的细节,包括镜像层数据和元数据。

docker image rm用于删除镜像。

docker image rm alpine:latest命令的含义是删除 alpine:latest 镜像。当镜像存在关联的容器,并且容器处于运行(Up)或者停止(Exited)状态时,不允许删除该镜像。

docker container

容器是镜像的运行时实例,就行java类编译运行在 jvm 虚拟机上面一样
虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。并且各个容器之前互不干扰!

在这里插入图片描述
容器命令

1) docker container run
启动新容器的命令。该命令的最简形式接收镜像和命令作为参数。镜像用于创建容器,而命令则是希望容器运行的应用。

docker container run -it ubuntu /bin/bash 命令会在前台启动一个 Ubuntu 容器,并运行 Bash Shell。

Ctrl-PQ 会断开 Shell 和容器终端之间的链接,并在退出后保持容器在后台处于运行(UP)状态。
2) docker container ls
用于列出所有在运行(UP)状态的容器。如果使用 -a 标记,还可以看到处于停止(Exited)状态的容器。
3) docker container exec
用于在运行状态的容器中,启动一个新进程。该命令在将 Docker 主机 Shell 连接到一个运行中容器终端时非常有用。

docker container exec -it <container-name or container-id> bash 命令会在容器内部启动一个 Bash Shell 进程,并连接到该 Shell。

为了使该命令生效,用于创建容器的镜像必须包含 Bash Shell。
4) docker container stop
此命令会停止运行中的容器,并将状态置为 Exited(0)。

该命令通过发送 SIGTERM 信号给容器内 PID 为 1 的进程达到目的。

如果进程没有在 10s 之内得到清理并停止运行,那么会接着发送 SIGKILL 信号来强制停止该容器。

docker container stop 可以接收容器 ID 以及容器名称作为参数。
5) docker container start
重启处于停止(Exited)状态的容器。可以在 docker container start 命令中指定容器的名称或者 ID。
6) docker container rm
删除停止运行的容器。可以通过容器名称或者 ID 来指定要删除的容器。推荐首先使用 docker container stop 命令停止容器,然后使用 docker container rm 来完成删除。
7) docker container inspect
显示容器的配置细节和运行时信息。该命令接收容器名称和容器 ID 作为主要参数。

DockerFile

使用 Docker 中的docker image build命令会读取 Dockerfile,并将应用程序容器化。

Dockerfile 由一行行命令语句组成,并支持以 # 开头的注释行。例如:
#Test web-app to use with Pluralsight courses and Docker Deep Dive book
#Linux x64
FROM alpine

LABEL maintainer=“nigelpoulton@hotmail.com”

#Install Node and NPM
RUN apk add --update nodejs nodejs-npm

#Copy app to /src
COPY . /src

WORKDIR /src

#Install dependencies
RUN npm install

EXPOSE 8080

ENTRYPOINT [“node”, “./app.js”]

使用 -t 参数为镜像打标签,使用 -f 参数指定 Dockerfile 的路径和名称,使用 -f 参数可以指定位于任意路径下的任意名称的 Dockerfile。

构建上下文是指应用文件存放的位置,可能是本地 Docker 主机上的一个目录或一个远程的 Git 库。

Dockerfile 中的 FROM 指令用于指定要构建的镜像的基础镜像。它通常是 Dockerfile 中的第一条指令。

Dockerfile 中的 RUN 指令用于在镜像中执行命令,这会创建新的镜像层。每个 RUN 指令创建一个新的镜像层。

Dockerfile 中的 COPY 指令用于将文件作为一个新的层添加到镜像中。通常使用 COPY 指令将应用代码赋值到镜像中。

Dockerfile 中的 EXPOSE 指令用于记录应用所使用的网络端口。

Dockerfile 中的 ENTRYPOINT 指令用于指定镜像以容器方式启动后默认运行的程序。

其他的 Dockerfile 指令还有 LABEL、ENV、ONBUILD、HEALTHCHECK、CMD 等。

Docker Compose

Docker Compose 与 Docker Stack 非常类似。它能够在 Docker 节点上,以单引擎模式(Single-Engine Mode)进行多容器应用的部署和管理。

docker Swarm

Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。

摘自:http://c.biancheng.net/docker/

Jenkins

what is jenkins

Jenkins是一个开源的、提供友好操作界面的 持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续自动的构建/测试软件项目、监控外部任务的运行。

Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

另外Jenkins有很多插件可以进行扩展

当一切配置就绪以后就可以根据 流水线(Pipeline) 配置来进行发布部署代码(持续集成)

what is CI / CD

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

好处

  1. 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
  2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成

持续集成并不能消除Bug,而是让它们非常容易发现和改正。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。

总的来说,持续集成、持续交付、持续部署提供了一个优秀的 DevOps 环境。对于整个开发团队来说,能很大地提升开发效率,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分。

DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

2、Message Queue

3、Elasticsearch - for search

es+kibana

4、sql语句

5、spring框架源码

6、spring boot 应用 源码

7、spring cloud

8、算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值