【精】DevOps实战学习CI/CD落地方案#CI篇#

目录

先有个大概了解

基本概念

CI/CD 

Devops

阿里云效 devops产品

K8s

jenkins

docker

git

maven

知行合一,上手操作

实操记录

安装VMware

安装并配置虚拟机

安装并配置docker

docker安装

修改镜像源(关键且易出错)

CentOS安装DockerCompose

Docker镜像仓库(可以省略)

安装gitlab

准备Git、jdk和maven环境

安装Jenkins

安装JDK、maven等环境

创建项目并上传到gitlab

创建jenkins项目 - CI

CD安装并配置k8s

笔记

问题记录

磨刀不误砍柴工

Linux常用操作

需要用到的操作

基本操作

常用

防火墙

Linux防火墙(Iptables) 即时生效,重启后失效

systemctl

linux查看80端口的连接数

修改系统环境变量文件

查看磁盘剩余空间

进程查看

创建

跟踪日志

文件编辑

Docker

基本操作

镜像操作

容器操作


先有个大概了解

基本概念

CI/CD 

CI/CD,全称为持续集成/持续交付(Continuous Integration/Continuous Delivery/Deployment),是一种软件开发实践,旨在通过自动化和频繁地集成、构建、测试、部署软件来快速、高效地提供软件应用。

持续集成(CI)强调在开发过程中频繁地集成代码。每当团队成员向版本控制系统(如Git)提交代码更改时,CI系统会自动触发构建过程。这确保了代码在提交后能够立即集成,从而尽早地发现和解决集成问题。

持续交付(CD)则是CI的延伸,它强调在每次成功集成后,软件都能够被构建、测试并准备好交付给最终用户。CD的目标是将软件从开发环境快速、安全地部署到生产环境,从而缩短软件从开发到上线的时间。

为了实现CI/CD,需要采用一系列自动化工具和流程,包括版本控制系统、自动化构建工具(如Jenkins、Travis CI等)、自动化测试工具(如Selenium、JUnit等)和容器化技术(如Docker)等。这些工具和技术共同协作,使得CI/CD过程能够高效、稳定地运行。

总之,CI/CD是一种重要的软件开发实践,它通过自动化和频繁的集成、构建、测试、部署来提高软件开发的效率和质量,从而加速软件产品的交付和迭代。

Devops

DevOps 是一种集开发(Development)和运维(Operations)于一体的软件交付方法。它强调团队之间的协作与沟通,打破传统开发和运维之间的壁垒,使得软件开发、测试、部署和运维等各个环节更加紧密地连接在一起,从而实现更快速、更高效、更稳定的软件交付。

在 DevOps 文化下,开发人员和运维人员需要紧密合作,共同承担责任和风险。开发团队需要编写高质量的代码,并进行充分的测试,确保软件能够稳定地运行;而运维团队则需要提供强大的基础设施和自动化工具,支持开发团队快速部署和运维软件。

DevOps 还强调自动化和持续改进。通过自动化工具和技术,可以自动化地构建、测试、部署和监控软件,减少人为错误和重复劳动,提高软件交付的效率和稳定性。同时,DevOps 也鼓励团队进行持续改进和反思,不断优化软件交付流程,提高团队的协作和创新能力。

阿里云效 devops产品

K8s

K8S,全称为Kubernetes,是一个开源的容器编排系统,用于自动部署、扩展和管理容器化应用程序。K8S由Google开发并捐献给云原生计算基金会(CNCF)进行开源维护。下面将分别介绍K8S的概念、作用、和原理。

概念:

  * Kubernetes(K8S)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。

  * 它提供了一种将多个容器组合成一个单独的、可管理的实体的方法,这个实体被称为Pod。

  * K8S还提供了一个用于管理和调度这些Pods的集群架构,使得容器化应用程序可以在不同的主机和环境中进行部署和运行。

作用:

  * 自动部署和扩展:K8S可以自动部署和扩展应用程序,根据实际需求动态调整资源分配。

  * 服务发现和负载均衡:K8S为容器提供统一的服务发现和负载均衡机制,使得应用程序可以轻松地互相通信。

  * 自我修复和自动恢复:K8S具有自我修复和自动恢复功能,可以自动检测和修复应用程序中的问题。

  * 滚动更新和版本控制:K8S支持滚动更新和版本控制,使得应用程序的更新和升级更加平滑和可控。

原理:

  * K8S基于主从架构,由一个主节点(Master)和多个工作节点(Worker)组成。

  * 主节点负责管理整个集群的状态和配置,包括调度Pods、管理资源、监控集群健康状态等。

  * 工作节点负责运行容器化应用程序,包括启动和停止Pods、监控容器状态等。

  * K8S通过API服务器提供RESTful API接口,使得用户可以通过命令行工具kubectl或第三方管理工具与集群进行交互。

  * K8S使用一系列控制循环来确保集群状态符合预期,包括复制控制器(ReplicaSet)、部署(Deployment)、服务(Service)等。

总之,K8S是一个强大的容器编排系统,它提供了一种简单而高效的方式来管理和部署容器化应用程序。通过自动化的部署、扩展、服务发现和负载均衡等功能,K8S可以帮助开发者和运维人员更加轻松地管理和维护大规模容器化应用程序。

jenkins

Jenkins是一个开源的、用Java编写的持续集成和持续交付(CI/CD)工具。它提供了一种简单易用的方式来自动化构建、测试和部署软件。Jenkins的主要目标是帮助开发团队加快软件开发过程,提高软件质量,并通过自动化流程减少手动操作和重复性工作。

Jenkins的使用主要涉及以下几个步骤:

  1. 安装和配置Jenkins:首先需要在服务器上安装Jenkins,并进行相应的配置,包括设置工作空间、配置构建工具、配置版本控制系统等。

  2. 创建和配置项目:在Jenkins中创建项目,并配置项目的构建过程,包括源代码管理、构建触发器、构建步骤、构建后操作等。

  3. 触发构建:当代码仓库中的代码发生变化时,Jenkins可以自动触发构建过程,包括拉取最新代码、编译、测试、打包、部署等。

  4. 监控和报告:Jenkins提供了丰富的监控和报告功能,可以实时查看构建过程的状态和结果,以及生成各种报告和图表,帮助开发团队更好地了解项目的构建和交付情况。

Jenkins的作用主要体现在以下几个方面:

  1. 持续集成:Jenkins通过自动化构建和测试过程,帮助开发团队实现持续集成,确保代码的质量和可维护性。

  2. 持续交付:Jenkins可以与版本控制系统、构建工具、部署工具等集成,实现自动化部署和持续交付,提高软件交付的效率和质量。

  3. 自动化流程:Jenkins通过自动化构建、测试和部署过程,减少手动操作和重复性工作,提高开发团队的效率。

Jenkins的原理主要涉及以下几个方面:

  1. 插件机制:Jenkins采用了插件机制,可以通过安装插件来扩展其功能,满足不同的需求。

  2. 构建流程:Jenkins的构建流程包括拉取代码、编译、测试、打包、部署等步骤,可以通过配置项目来定义具体的构建流程。

  3. 构建触发器:Jenkins支持多种构建触发器,包括定时触发器、代码变更触发器等,可以根据需求选择合适的触发器来触发构建过程。

  4. 构建结果反馈:Jenkins会将构建结果反馈给开发人员,包括构建成功或失败的信息、构建日志等,帮助开发人员快速定位和解决问题。

总之,Jenkins是一个强大的持续集成和持续交付工具,通过自动化构建、测试和部署过程,帮助开发团队提高软件开发效率和质量。

docker

Docker是一个开源的应用容器引擎,它基于Go语言开发,使得开发者可以将应用及其依赖包打包到一个轻量级、可移植的容器中,并发布到任何流行的Linux或Windows操作系统的机器上,实现虚拟化。Docker的容器是完全使用沙箱机制,相互之间不会有任何接口,保证了容器的独立性。

Docker的原理主要包括以下四个方面:

  1. 命名空间(Namespace):Docker使用命名空间来隔离不同容器中的进程,每个容器都有自己独立的命名空间。这样可以确保容器内的进程无法访问其他容器的资源,从而实现了资源的隔离。

  2. 控制组(Control Groups):控制组用于限制容器的资源使用,例如CPU、内存、磁盘IO等。Docker使用控制组来确保容器不会占用过多的计算资源,并能够根据需求进行动态调整,使得资源利用更加合理。

  3. 联合文件系统(Union File System):Docker使用联合文件系统来实现容器的轻量化和高效性。它将多个只读文件系统(镜像层)以及一个可写文件系统(容器层)合并在一起,形成一个虚拟的文件系统。这样,当容器启动时,只需要加载必要的文件系统层,从而减少了启动时间和资源占用。

  4. 镜像(Image):Docker的镜像是容器的基础,它包含了运行应用程序所需的所有内容,包括操作系统、库文件、应用程序代码等。镜像可以被视为一个只读的模板,通过创建容器来运行应用程序。

Docker的主要作用包括:

  1. 运行环境的快速部署:通过Docker,开发者可以轻松地构建、测试和部署应用程序,而无需担心运行环境的配置和依赖问题。

  2. 虚拟化:Docker可以实现操作系统的虚拟化,使得应用程序可以在隔离的环境中运行,提高了应用程序的安全性和稳定性。

  3. 应用隔离:Docker使用命名空间和控制组等机制,确保了不同容器之间的隔离性,防止了应用程序之间的相互影响。

总的来说,Docker通过其独特的技术原理和强大的功能,为开发者提供了一个高效、灵活、安全的容器化平台,使得应用程序的部署、管理和维护变得更加简单和方便。

数据持久化问题

  1. 容器与数据分离:Docker的设计理念是鼓励将短暂的容器与长期保存的数据分离。这意味着,虽然容器在运行过程中可能会被销毁和重建,但挂载到容器外部的数据可以持久保存。

  2. 数据卷:Docker提供了一种称为“数据卷”的机制,允许你将容器内的特定目录挂载到宿主机上的持久化存储区域。这样,即使容器重启或重新创建,数据仍然保留在宿主机上。

例如,使用-v或--volume选项可以将数据卷挂载到容器中:

docker run -v /host/path:/container/path my_image

  1. 默认行为:如果不特别指定数据存储策略,容器的数据默认是临时的。这意味着当容器停止运行时,其内部的数据将被清除。这是为了保持容器的轻量级和快速启动。

  2. 绑定挂载:除了数据卷,还可以使用“绑定挂载”将宿主机上的目录直接映射到容器内的目录。这样,容器可以访问宿主机上的文件系统,从而实现数据的持久性。

git

Git是一种分布式版本控制系统,它的原理和作用如下:

**原理**:

Git的工作原理主要基于快照而非差异。每次提交时,Git都会为整个项目打一个快照并存储这个快照。这意味着每次的提交都会包含项目在那个时间点的完整副本。为了高效存储这些快照,Git采用了对象数据库的方式,每个文件在Git中都被视为一个对象,并通过SHA-1哈希算法为每个对象生成一个唯一的标识符。

Git还采用了分布式的设计,这意味着每个使用Git的用户都可以拥有完整的代码仓库的副本,包括所有的版本历史记录。这种设计使得Git可以在没有网络连接的情况下进行提交和查看版本历史,大大提高了工作的灵活性。

**作用**:

Git的主要作用在于版本控制。版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。通过Git,我们可以追踪文件的每一次改动,包括何时、由谁以及改动了什么内容。这对于团队协作、代码审查以及错误追踪都非常重要。

此外,Git还提供了许多强大的功能,如分支和合并。分支允许我们在不影响主线代码的情况下,进行新的功能开发或错误修复。合并则可以将这些改动整合到主线代码中。这些功能使得Git成为了许多大型项目的主要版本控制工具。

总的来说,Git是一种强大而灵活的版本控制系统,它不仅可以追踪文件的改动,还可以帮助我们在团队中更有效地协作和管理代码。

maven

Maven是一个强大的软件项目构建和管理工具,它基于项目对象模型(Project Object Model,简称POM)的理念,能够通过一段核心描述信息来管理项目的构建、报告和文档信息。

Maven的主要作用体现在以下几个方面:

  1. 依赖管理:Maven可以自动下载、配置和管理项目所需的各种库和依赖,从而极大地简化了项目的构建和部署过程。此外,Maven还提供了依赖冲突解决机制,帮助开发者解决不同库之间的版本冲突问题。

  2. 项目构建:Maven提供了一套标准化的项目构建流程,包括编译、测试、打包、部署等。开发者只需通过简单的命令,就可以完成整个项目的构建过程。

  3. 文档生成:Maven可以自动生成项目的文档,包括API文档、用户手册等,这极大地提高了项目的可读性和可维护性。

Maven的工作原理基于其独特的项目对象模型(POM)。在Maven项目中,每个项目都有一个pom.xml文件,这个文件包含了项目的所有配置信息,如依赖、构建流程、插件等。Maven通过解析pom.xml文件,获取项目的配置信息,然后根据这些配置信息来执行相应的构建任务。

总的来说,Maven通过其强大的依赖管理、项目构建和文档生成功能,极大地简化了软件项目的开发和维护过程,提高了开发效率和项目的可维护性。

知行合一,上手操作

实操记录

安装VMware

  1. 下载并安装vmware

安装并配置虚拟机

  1. 下载centos7镜像:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)

  2. 配置启动虚拟机:4G内存  20G存储空间

  3. 配置网络

这里选的是桥接模式,默认是NAT模式,刚开始怎么都连不上网,后面移除了网络适配器,换成桥接就OK了。可以用 ip add命令查看ip,并用 ping www.baidu.com检查是否有网

安装并配置docker

docker安装

首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2 --skip-broken

然后更新本地镜像源:

# 设置docker镜像源

yum-config-manager \

--add-repo \

https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

启动docker前,一定要关闭防火墙后!!

# 关闭

systemctl stop firewalld

# 禁止开机启动防火墙

systemctl disable firewalld

查看docker是否启动

docker images

通过命令启动docker:

systemctl start docker # 启动docker服务

systemctl stop docker # 停止docker服务

systemctl restart docker # 重启docker服务

然后输入命令,可以查看docker版本:

docker -v

如果启动时出现错误

提示:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

1

# 进入docker目录

cd /etc/docker/

# 修改daemon的类型(这里不用执行)

#mv daemon.json daemon.conf

# 重启docker

systemctl restart docker

修改镜像源(关键且易出错)

执行以下命令,打开 /etc/docker/daemon.json 配置文件

vi /etc/docker/daemon.json

按 i 切换至编辑模式,添加以下内容,并保存。

{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}

备注:清华大学开源软件镜像站 | Tsinghua Open Source Mirror

重启Docker

systemctl restart docker

service docker restart

#查看镜像源

docker info

CentOS安装DockerCompose

Linux下需要通过命令下载:

# 安装

curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 修改权限

chmod +x /usr/local/bin/docker-compose

2.3.Base自动补全命令:

# 补全命令

curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

查看版本

docker-compose -verison

Docker镜像仓库(可以省略)

  1. 拉取官方registry镜像:

docker pull registry

  1. 运行registry容器:

 Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \

--restart=always \

--name registry \

-p 5000:5000 \

-v registry-data:/var/lib/registry \

registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

启动成功后,可以使用 docker ps 查看

访问http://YourIp:5000/v2/_catalog

可以查看当前私有镜像服务中包含的镜像

注意:如果你的私有仓库没有使用https,需要在Docker客户端上修改/etc/docker/daemon.json文件(如果文件不存在则新建),添加私有仓库地址到"insecure-registries"列表中,然后重启Docker服务。例如,在daemon.json文件中添加以下内容:

{

"insecure-registries": ["192.168.10.2:5000"]

}

然后,使用命令systemctl restart docker重启Docker服务。

当配置了这个选项后,Docker 在与这些指定的镜像仓库通信时,将不再验证 TLS 证书,从而绕过了 Docker 的安全机制。

安装gitlab

#创建docker-compose.yml文件

cd /usr/local

mkdir docker

cd docker/

mkdir gitlab_docker

cd gitlab_docker

vi docker-compose.yml

#内容如下 ,volumes设置了很多挂载盘 因为非常重要要保留数据和配置 不然重启数据就没了

version: '3.3'

services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'gitlab'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.10.2:8300'  # web站点访问地址
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8300:8300' # 
      # - '8443:8443'
      - '2224:2224'
    volumes:
      - ./config:/etc/gitlab
      - ./data:/var/opt/gitlab # 挂载卷
      - ./logs:/var/log/gitlab
  #  logging:
  #    driver: 'json-file'
  #    options:
  #      max-size: '2g'

#查看镜像

docker search gitlab 

#拉镜像(要确保走国内镜像分分钟就好,不然等一天吧)

docker pull gitlab/gitlab-ce:latest

#查看镜像是否拉取

docker images

#在docker compose.yml目录下启动gitlab(要一小会3M)

docker-compose up -d

#查看启动日志

docker-compose logs -f

期间可以访问地址

http://192.168.10.2:8300

看看是否启动,502响应码说明还在启动中

#启动后进入docker主机内部查看默认root密码

#docker exec -it <container_id_or_name> /bin/bash

docker exec -it gitlab_docker_gitlab_1_ca4d609390ad /bin/bash

容器名称可以用docker ps查看目前启动的容器

# 备注 容器重命名

docker rename old_container_name new_container_name

cat /etc/gitlab/initial_root_password

#登录gitlab

http://192.168.10.2:8929

准备Git、jdk和maven环境

下载jkd和maven 的tar.gz包,放到虚拟机

#解压到目录

tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local

#重命名(可以省略,【tab】指快捷补全文件名)

cd /usr/local/

mv jdk【tab】   jdk/

mv apache【tab】   maven/

修改setting文件

cd maven/conf

#加入阿里云地址和jdk8编译插件

<mirrors>

    <mirror>

      <id>alimaven</id>

      <name>aliyun maven</name>

      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

      <mirrorOf>central</mirrorOf>       

    </mirror>

  </mirrors>

  <profiles>

        <profile>   

            <id>jdk8</id>   

            <activation>   

              <activeByDefault>true</activeByDefault>   

              <jdk>1.8</jdk>   

            </activation>   

            <properties>   

                    <maven.compiler.source>1.8</maven.compiler.source>   

                    <maven.compiler.target>1.8</maven.compiler.target>   

                    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>   

                </properties>   

        </profile>

  </profiles>

  <activeProfiles>

        <activeProfile>jdk8</activeProfile>

  </activeProfiles>

#设置环境变量

#编编辑 profile末尾加入

vi ~/.bash_profile

export JAVA_HOME=/usr/local/jdk

export PATH=$PATH:$JAVA_HOME/bin

export M2_HOME=/usr/local/maven

export PATH=$PATH:$M2_HOME/bin

#执行以下命令使更改生效:

source ~/.bash_profile

#验证

java -version

mvn -v

安装Jenkins

#拉镜像

docker pull jenkins/jenkins

在/usr/local下建docker文件夹,并建jenkins_docker 子目录

mkdir docker

cd docker

mkdir jenkins_docker

cd jenkins_docker

创建docker-composr.yml文件(注意格式 不然无法启动虚拟机 对的格式会有颜色标记)

vi docker-compose.yml

version: '3'
services:                                      # 集合
  docker_jenkins:
    user: root                                 # 为了避免一些权限问题,这里使用了 root
    restart: always                            # 重启方式
    image: jenkins/jenkins                 # 指定服务所使用的镜像,这里选择了 LTS (长期支持)
    container_name: jenkins                    # 容器名称
    ports:                                     # 对外暴露的端口定义
      - 8080:8080                              # 访问 Jenkins 服务端口
      - 50000:50000
    volumes:                                   # 卷挂载路径
      - /var/vol_dockers/jenkins_home/:/var/jenkins_home  # 这是我们一开始创建的目录挂载到容器内的 jenkins_home 目录
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker                # 这是为了我们可以在容器内使用 docker 命令
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
 

#在docker compose.yml目录下启动(要一小会3M)

docker-compose up -d

备注#重启docker-compose

docker-compose restart

#查看启动日志

docker-compose logs -f

#密码cd925599e21f4879b8a3e369fe7a977d

/var/jenkins_home/secrets/initialAdminPassword

#升级jenkins不然很多插件用不了,先浏览器下载高版本war

#上传到主机,并复制到虚拟机内

docker cp jenkins.war jenkins_ts:/usr/share/jenkins/jenkins.war

docker restart jenkins

#重新访问jenkins地址,提示消失,而且还是中文的

安装JDK、maven等环境

#复制jdk和maven 到jenkins虚拟机

cp -r /usr/local/jdk /var/vol_dockers/jenkins_home/

cp -r /usr/local/maven /var/vol_dockers/jenkins_home/

备注:

 /var/vol_dockers/jenkins_home/:/var/jenkins_home 是我们的挂载目录

jenkins界面备注jar和maven

/var/jenkins_home/jdk
/var/jenkins_home/maven

jenkins安装Publish Over SSH插件

进入系统配置 管理publish over ssh,并在高级配置勾选使用密码,后测试连接(remote 文件需要先建好)

创建项目并上传到gitlab

创建测试文件

上传git

创建gitlab项目

http://192.168.10.2:8300/root/mytest.git

然后push就可以

查看gitlab

创建jenkins项目 - CI

构建

【控制台输出】查看构建日志

进入jenkins容器查看workspace,所有工程都会放这里

看到mytest说明第一步从gitlab构建项目成功,接下来配置自动部署

clean package -DskipTest

查看构建日志

配置构建后上传服务器

查看上传成功

接下来最后一步,上传成功后自动启动

项目配置dockerfile

docker\Dockerfile

#FROM quay.io/ncross/hacbs-test-simple-jdk8:latest
FROM openjdk:8-jdk-alpine
COPY mytest.jar /var/vol_dockers/jenkins_home/
WORKDIR /var/vol_dockers/jenkins_home/
CMD java -jar mytest.jar

docker\docker-compose.yaml

version: '3.1'
services:                                      # 集合
  mytest:
    build:
      context: ./
      dockerfile: Dockerfile
    restart: always                            # 重启方式
    image: mytest:v1.0.0                # 指定服务所使用的镜像,这里选择了 LTS (长期支持)
    container_name: mytest                    # 容器名称
    ports:                                     # 对外暴露的端口定义
      - 8081:8081

配置jenkins构建后置事件

点配置Exec command

cd /usr/local/sshtest/docker

mv ../target/*jar ./

docker-compose down

docker-compose up -d --build

docker image prune -f

备注 /usr/local/sshtest 就是构建好发送给服务器的路径

docker image prune -f 为了清理没用的image

CD安装并配置k8s

笔记

问题记录

启动项目后访问不了,原因是项目端口默认8080 但是docker-compose配置了  8081:8081.

解决办法:项目端口改为8081

磨刀不误砍柴工

Linux常用操作

需要用到的操作

#命令查看ip

ip add

 #检查是否有网

ping www.baidu.com

#重新启动网络

systemctl restart network

#进入网络配置文件并修改保存(可能不是eth0

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改 # i;保存# esc +  :wq  + enter

参考配置

BOOTPROTO=static (如果是chcp 后面可能不配)
ONBOOT=yes
HWADDR=虚拟机mac地址
IPADDR=设置虚拟机ip地址,与主机ip在同一网段
NETMASK=设置子网掩码
GATEWAY=设置虚拟网关与主机相同
DNS1=设置dns与主机相同

基本操作

常用

#文件递归cp

cp -r /usr/local/jdk /var/vol_dockers/jenkins_home/

#删除目录下所有文件

rm -rf *

#删除文件

rm 

#清屏幕

clear

#查看当前路径(显示当前工作目录的绝对路径)

pwd

#查看文件夹下文件

ls

#编辑文件

vim /etc/docker/daemon.json

Vim是Vi的升级版本,它不仅保留了Vi的所有指令和功能,还增加了许多新的特性和改进,使得编辑和编程更加高效和便捷。

#自动补全

Tab快捷键

防火墙

systemctl start firewalld.service#启动firewall

systemctl stop firewalld.service#停止firewall

systemctl disable firewalld.service#禁止firewall开机启动

systemctl status firewalld.service#查看状态

Linux防火墙(Iptables) 即时生效,重启后失效

        开启: service iptables start  

        关闭: service iptables stop

systemctl

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service

关闭一个服务:systemctl stop firewalld.service

重启一个服务:systemctl restart firewalld.service

显示一个服务的状态:systemctl status firewalld.service

在开机时启用一个服务:systemctl enable firewalld.service

在开机时禁用一个服务:systemctl disable firewalld.service

查看服务是否开机启动:systemctl is-enabled firewalld.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed

linux查看80端口的连接数

        netstat -pnt | grep :80 | wc -l 去掉后面的 "| wc -l"就能看到详细信息了

        netstat -an|grep 22

修改系统环境变量文件

        vi/vim /etc/profile

        source /etc/profile(使修改立即生效)

        echo $PATH(查看PATH值)

查看磁盘剩余空间

        lsblk 查看分区和磁盘fdisk -l

        cfdisk /dev/sda 查看分区

        df -hl

        du -bs dir_name

进程查看

ps -ef | grep

netstat -ntlp查看端口netstat –tunlp

netstat –apn | grep 8080

ps -aux | grep pid查看

kill -9 [PID]

pwdx pid 查看路径

创建

        文件夹:mkdir 权限 xx;mkdir xx;mkdir 777 xx

        文件:vi/vim xx :wq

跟踪日志

        tail -f -n 100 xxx

文件编辑

 vi/vim(编辑);shift+:wq(退出编辑保存);shift+:q(退出编辑);shift+:q!(强制退出);Esc->/关键字(查找关键字)  n(下一条)  shift+n(上一条)

Docker

基本操作

#启动docker

systemctl start docker # 启动docker服务

systemctl stop docker # 停止docker服务

systemctl restart docker # 重启docker服务

service docker restart

镜像操作

#删除空镜像

docker image prune -f

#查看特定的镜像,可以使用 grep 命令进行过滤,例如查看名为 ubuntu 的镜像:

docker images | grep ubuntu

#查看包括中间层镜像的所有镜像

docker images -a

容器操作

#进入容器

docker exec -it <container_id_or_name> /bin/bash

#查看启动的容器

docker ps 查看

#启动容器

docker-compose up -d

#查看启动日志

docker-compose logs -f

#重命名容器

docker rename old_container_name new_container_name

#复制文件到容器

docker cp jenkins.war jenkins_ts:/usr/share/jenkins/jenkins.war

#重启容器

docker restart jenkins

#正在运行的容器

docker ps

#最近创建的容器

docker ps --latest

# 备注 容器重命名

docker rename old_container_name new_container_name

#退出容器

exit

#停止并退出容器

docker stop <container_id_or_name>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/315289.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低代码信创开发核心技术(四)动态元数据系统设计

一、概述 在当今快速发展的信息技术领域&#xff0c;动态元数据系统扮演着至关重要的角色。它不仅能够提供数据的描述信息&#xff0c;还能动态地适应业务需求的变化&#xff0c;从而提高系统的灵活性和可扩展性。构建一个动态元数据系统意味着我们可以在不重启系统的情况下&a…

Facebook的未知力量:数字世界的新引擎

在数字化的时代&#xff0c;社交媒体已经成为了我们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;其影响力远远超出了我们的想象。但是&#xff0c;Facebook背后隐藏的力量和影响远不止于此&#xff0c;它正逐渐成为数字世界的新引擎&#xff0…

书生·浦语 大模型(学习笔记-5)XTuner 微调 LLM:1.8B、多模态、Agent

目录 一&#xff1a;两种微调 二、数据的一生 三、微调方案 四、XTuner 五、InternLM2 1.8B模型&#xff08;相关知识&#xff09; 一&#xff1a;两种微调 增量与训练和指令微调的区别 二、数据的一生 原始数据转换为标准格式数据 添加对话模板&#xff0c;直接调用即可…

操作系统课程--考纲要求

第一/二次课&#xff1a; 绪论 【学习内容与目标】 1、操作系统目标及定义 掌握操作系统的设置目标&#xff0c;理解并掌握操作系统的定义&#xff0c;了解操作系统的地位以及从资源管理者角度和用户角度了解操作系统的组成。 2、 操作系统的特征与功能 掌握操作系统的特征&…

github Copilot的使用总结

1. 代码建议和补全 GitHub Copilot 的基本使用涉及编写代码时的实时代码建议和补全。一旦你已经安装并配置好 GitHub Copilot 插件&#xff0c;你可以在支持的编辑器&#xff08;如 Visual Studio Code&#xff09;中开始使用 Copilot。以下是一些基本的使用步骤&#xff1a; …

RK3588S和ARM阵列服务器在虚拟化云平台的应用

RK3588是瑞芯微2021年底推出的首款高端8nm旗舰芯片&#xff0c;而RK3588S 则是针对消费端市场在RK3588基础上缩减了部分外围接口&#xff0c;CPU、GPU和NPU等主要参数得到了保留&#xff0c;主要应用范围为高端ARM平板、ARM笔电产品&#xff0c;会议平板类、ARM服务器、智能机器…

信息系统项目管理师——第7章项目立项管理

本章考选择题2-3分&#xff0c;案例和论文均有可能作为领域考试。 项目建议与立项申请♥♥♥♥♥ 立项申请的概念 立项申请又称为项目建议书&#xff0c;是项目建设单位向上级主管部门提交项目申请时所必须的文 件&#xff0c;是该项目建设筹建单位根据国民经济的发展、国家…

JavaWeb过滤器

Javaweb过滤器是一种用于在Servlet处理请求之前或之后对请求进行预处理或后处理的组件。过滤器可以用于拦截请求、修改请求参数、过滤响应内容等操作。其主要作用包括&#xff1a; 拦截请求&#xff1a;过滤器可以拦截客户端请求&#xff0c;对请求进行验证、过滤或修改&#x…

Java基础之JVM对象内存分配机制简介

一 对象内存分配 1.1 运行时数据区域 1.2 常见java应用启动JVM参数&#xff1a; -Xss&#xff1a;每个线程的栈大小(单位kb)-Xms&#xff1a;堆的初始大小&#xff0c;默认物理内存的1/64,示例&#xff1a;-Xms:4g -Xms:10m-Xmx&#xff1a;堆的最大可用大小&#xff0c;默认物…

水库大坝安全白蚁监测系统解决方案

一、系统背景 白蚁作为河岸生态系统中的重要病害&#xff0c;不仅会导致水库大坝外部环境发生改变&#xff0c;甚至会引发水库大坝破坏&#xff0c;进而导致自身结构失去稳定性&#xff0c;严重影响水库大坝的正常运行。因此&#xff0c;治理水库大坝白蚁是确保水库大坝工程顺利…

HTTP与HTTPS 对比,区别详解(2024-04-25)

一、简介 HTTP&#xff08;超文本传输协议&#xff0c;Hypertext Transfer Protocol&#xff09;是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上&#xff0c;通常使用端口 80。 HTTPS&#xf…

【Hadoop】- MapReduce YARN 初体验[9]

目录 提交MapReduce程序至YARN运行 1、提交wordcount示例程序 1.1、先准备words.txt文件上传到hdfs&#xff0c;文件内容如下&#xff1a; 1.2、在hdfs中创建两个文件夹&#xff0c;分别为/input、/output 1.3、将创建好的words.txt文件上传到hdfs中/input 1.4、提交MapR…

区块链技术与应用学习笔记(8-9节)——北大肖臻课程

目录 8.挖矿 对于全节点和轻节点思考问题&#xff1f; ①全节点在比特币的主要作用&#xff1f; ②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块&#xff0c;重新开始挖矿。节点这么做…

「React Native」为什么要选择 React Native 作为的跨端方案

文章目录 前言一、常见因素二、举个栗子2.1 项目背景2.2 为什么选择 React Native2.3 项目实施2.4 成果总结 前言 没有完美的跨端技术&#xff0c;只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 一、常见因素 共享代码库&#xff1a; React Native 允许开发者编写…

OmniPlan Pro for Mac v4.8.0中文激活版 项目流程管理工具

OmniPlan Pro for Mac是一款功能强大的项目管理软件&#xff0c;它以其直观的用户界面和丰富的功能&#xff0c;帮助用户轻松管理各种复杂的项目。 OmniPlan Pro for Mac v4.8.0中文激活版 通过OmniPlan Pro&#xff0c;用户可以轻松创建任务&#xff0c;设置任务的开始和结束时…

毕业撒花 流感服务小程序的设计与实现

目录 1.1 总体页面设计 1.1.1 用户首页 1.1.2 新闻页面 1.1.3 我的页面 1.1.5 管理员登陆页面 1.1.6 管理员首页 1.2 用户模块 1.2.1 体检预约功能 1.2.2 体检报告功能 1.2.4 流感数据可视化功能 1.2.5 知识科普功能 1.2.6 疾病判断功能 1.2.7 出示个人就诊码功能 …

系统安全测试要怎么做?

进行系统安全测试时&#xff0c;可以按照以下详细的步骤进行&#xff1a; 1、信息收集和分析&#xff1a; 收集系统的相关信息&#xff0c;包括架构、部署环境、使用的框架和技术等。 分析系统的安全需求、威胁模型和安全策略等文档。 2、威胁建模和风险评估&#xff1a; …

【VUE】Vue中实现树状表格结构编辑与版本对比的详细技术实现

Vue中实现树状表格结构编辑与版本对比的详细技术实现 在Vue中&#xff0c;创建一个可编辑的树状表格并实施版本对比功能是一种需求较为常见的场景。在本教程中&#xff0c;我们将使用Vue结合Element UI的el-table组件&#xff0c;来构建一个树状表格&#xff0c;其中包含添加、…

codeforce#933 题解

E. Rudolf and k Bridges 题意不讲了&#xff0c;不如去题干看图。 传统dp&#xff0c;每个点有两个选择&#xff0c;那么建桥要么不建。需要注意的是在状态转移的时候&#xff0c;桥是有长度的&#xff0c;如果不建需要前d格中建桥花费最少的位置作为状态转移的初态。 #incl…

与Apollo共创生态:Apollo7周年大会自动驾驶生态利剑出鞘

前言 4月22日&#xff0c;百度Apollo在北京车展前夕举办了以“破晓•拥抱智变时刻”为主题的智能汽车产品发布会&#xff0c;围绕汽车智能化&#xff0c;发布了智驾、智舱、智图等全新升级的“驾舱图”系列产品。 1、7周年大会 自2013年百度开始布局自动驾驶&#xff0c;201…