【精】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>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构-树和二叉树-森林-哈夫曼树】

目录 1 树1.1 树的描述&#xff08;基本术语&#xff09; 2 二叉树&#xff08;树的度最大为2&#xff09;2.1 注意事项-五种基本形态2.2 二叉树的抽象数据类型定义 3 二叉树的性质3.1 两种特殊形式的二叉树-重点会计算3.2 题目练习&#xff1a; 4 二叉树的存储结构4.1 顺序存储…

竞逐智能家居大模型:美的“蓄力”,海尔“疾行”

配图来自Canva可画 随着ChatGPT火热出圈&#xff0c;AI大模型便成为了各行各业必争的高地。“BAT”等互联网大厂、华为、小米等通讯巨头&#xff0c;以及一些垂直AI公司&#xff0c;都开始在大模型市场积极布局。众所周知&#xff0c;发展大模型的关键在于应用场景的落地&…

超星图书转成PDF格式

转为pdf 为避免浪费您的时间&#xff0c;本篇转载文章不值得花费您的宝贵时间阅读 方法一 感谢医学插画动画杜鹏 Roison An两位提供的方法&#xff0c;经试验后简化了一下&#xff0c;得出以下方法:1、使用超星打开你想要转换的图书2、依次打开本书的所有页面&#xff0c;不要…

Linux基础和常见命令速览

来源&#xff1a;Linux 基础知识总结 | JavaGuide 一、Linux文件系统 1. 文件系统 Linux 系统中的一个重要的概念&#xff1a;一切都是文件。 在 Linux 操作系统中&#xff0c;一切被操作系统管理的资源&#xff0c;如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件…

(避雷指引:管理页面超时问题)windows下载安装RabbitMQ

一、背景&#xff1a; 学习RabbitMQ过程中&#xff0c;由于个人电脑性能问题&#xff0c;直接装在windows去使用RabbitMQ&#xff0c;根据各大网友教程&#xff0c;去下载安装完之后&#xff0c;使用web端进行简单的入门操作时&#xff0c;总是一直提示超时&#xff0c;要么容…

Electron+Vue3整合-开发时整合-全部ts开发 + 一条命令启动vue3和electron两个服务

说明 本文介绍一下 Electron Vue3 的整合的中级操作。实现的效果是 &#xff1a; 1、一个正常的Vue3项目&#xff1b; 2、整合加入 Electron 框架 &#xff1a;开发时只执行一条命令&#xff0c;启动 vue 项目 后 再启动 electron&#xff1b;electron 的开发使用 typescript…

Office疑难杂症-Word页码重复无法修改

在现代办公环境中&#xff0c;Microsoft Office 套件扮演着不可或缺的角色&#xff0c;尤其是 Word 文档处理软件&#xff0c;在日常生活和工作中的应用广泛。然而&#xff0c;即使是这样成熟的软件&#xff0c;也不免有一些令人头疼的技术问题。本文将详细介绍如何解决Word中页…

深度学习之图像分割从入门到精通——基于unet++实现细胞分割

模型 import torch from torch import nn__all__ [UNet, NestedUNet]class VGGBlock(nn.Module):def __init__(self, in_channels, middle_channels, out_channels):super().__init__()self.relu nn.ReLU(inplaceTrue)self.conv1 nn.Conv2d(in_channels, middle_channels, …

回归预测 | Matlab实现BO-RF贝叶斯优化随机森林多变量回归预测

回归预测 | Matlab实现BO-RF贝叶斯优化随机森林多变量回归预测 目录 回归预测 | Matlab实现BO-RF贝叶斯优化随机森林多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BO-RF贝叶斯优化随机森林多变量回归预测&#xff1b; 2.输入7个特征&#xf…

互联网技术知识点总览——数据库知识点框架

简介 本文对数据库的知识点整体框架进行梳理和分享如下&#xff1a;

Vue3+TS版本Uniapp:封装uni.request请求配置

作者&#xff1a;前端小王hs 阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主 封装请求配置项 封装拦截器封装uni.request 封装拦截器 uniapp的封装逻辑不同于Vue3项目中直接使用axios.create()方法创建实例&#xff08;在create方法中写入请求…

Oracle中的视图

1- 什么是视图 视图是一个虚拟表 视图是由sql查询语句产生的 视图真实存在 但是不存储数据 视图中的数据 只是对 基表(源数据表) 中的数据的引用 总的来说 视图可以简化数据 用户&#xff0c;订单&#xff0c;物流 三个表进行关联 吧很复杂的sql查询语句存储成一个视图 …

【 AIGC 研究最新方向(下)】面向平面、视觉、时尚设计的高可用 AIGC 研究方向总结

目前面向平面、视觉、时尚等设计领域的高可用 AIGC 方向有以下 4 种&#xff1a; 透明图层生成可控生成图像定制化SVG 生成 本篇&#xff08;下篇&#xff09;介绍 3、4&#xff0c;上篇在&#xff1a;https://blog.csdn.net/weixin_44212848/article/details/138035279?spm…

CSS——高级选择器

层次的选择器&#xff1a; <1> 后代选择器&#xff1a; 格式&#xff1a; 标签1 标签2{} 解释&#xff1a; 标签1 不生效&#xff0c;被标签1 嵌套中的 标签2才生效 举例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charse…

JVM常见的垃圾回收器

1、回收方法区&#xff1a; 方法区回收价值很低&#xff0c;主要回收废弃的常量和无用的类。 方法区中的存储&#xff1a; 方法区中存储的是加载的类的信息&#xff0c;常量&#xff0c;静态变量&#xff0c;即时编译后的代码等数据&#xff0c;所以回收的对象也就是这些内…

go+react实现远程vCenter虚拟机管理终端

文章目录 React-VcenterDemoQuick Start React-Vcenter 基于go & react实现远程vSphere vcenter虚拟机终端console页面&#xff0c;提供与vcenter管理中的Launch Web Console相同的功能。 项目地址&#xff1a;react-vcenter Demo URL: http://localhost:3000 Quick St…

【leetcode面试经典150题】66. 分隔链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

第24天:安全开发-PHP应用文件管理模块显示上传黑白名单类型过滤访问控制

第二十四天 一、PHP文件管理-显示&上传功能实现 如果被抓包抓到数据包&#xff0c;并修改Content-Type内容 则也可以绕过筛查 正常进行上传和下载 二、文件上传-$_FILES&过滤机制实现 无过滤机制 黑名单过滤机制 使用 explode 函数通过点号分割文件名&#xff0c;…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt 小区物业管理系统 的设计与实现

一.项目介绍 系统分为管理员 和 业主 两块&#xff1a; 管理员点击进入到系统操作界面&#xff0c;可以对首页、业主信息管理、管理员信息管理、 楼栋和房屋信息管理、物业费管理、地下停车位管理、公告信息管理、报修信息管理、 投诉管理以及个人信息等功能模块 …

温湿度LCD显示并上传服务器

项目需求 通过温湿度传感器将值传到LCD1602&#xff0c;并实时通过蓝牙透传到手机。 硬件介绍 温湿度传感器 DHT11温湿度传感器 DHT11_温湿度传感器数据格式-CSDN博客 LCD1602LCD1602-CSDN博客 HC-01 继电器模块 硬件接线 LCD1602 D0~D7 --> A0~A7VDD, A --> 5v…