【精】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.mzph.cn/web/1615.shtml

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

相关文章

Spring Security 入门篇(一)-- 简介

引言 Spring Security 官方文档 https://spring.io/projects/spring-security Spring Security 中文文档 &#xff1a; https://springdoc.cn/spring-security/ Spring Cloud 中文文档 https://www.springcloud.cc/spring-security.html#overall-architecture 一、简介 1. 什…

poll实现echo服务器的并发

poll实现echo服务器的并发 代码实现 #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <stdlib.h> #include <arpa/inet.h> #include <sys/time.h> #include <unistd.h> #…

【JAVA】实现只有一个窗口弹出的底层逻辑——单身模式

目录 背景说明 代码实现 手写笔记 背景说明 有的时候&#xff0c;当你点击一个选项时会弹出来多个窗口&#xff0c;而有的时候只会弹出一个。 实际上&#xff0c;弹出多个窗口就是创建了多个相同的对象&#xff0c;而只弹出一个就是我们今天即将分享的单身模式——一个类只产生…

【Python】使用Python计算简单数值积分

题外话&#xff0c;Python语言命名的来源&#xff1a;&#xff08;见下图&#xff09;Monty Python巨蟒剧团 1、积分题目&#xff08;3&#xff09; 2、解析解答 3、Python计算代码 import math import scipy.integrate as integrate# 积分区间 # x_min 0.0 # 1 # x_min …

润石科技(RUNIC)汽车电子应用方案和物料选型

一、润石科技&#xff08;RUNIC&#xff09;简介 江苏润石科技有限公司是一家专注于高性能、高品质模拟/混合信号集成电路研发和销售的高科技半导体设计公司。公司主要产品线分为两类&#xff1a;信号链和电源管理&#xff0c;其中信号链包含运算放大器、比较器、模拟开关、数…

王者荣耀防御塔如何开发!新手小白做游戏开发采坑经过。phaser前端游戏框架

好嘞&#xff0c;游戏开发框架是js 开发的网页小游戏&#xff01; phaser这个框架。好我们先上图&#xff01; 目前大概是这么一个样子。 然后防御塔功能呢。简单的说就是当人物进去的时候打他。人物扣血。 我们的小人物是这样的代码 遇到的问题如下&#xff1b; 小白刚开始…

C++从入门到精通——模板

模板 前言一、泛型编程二、函数模板函数模板的概念函数模板格式示例 函数模板的原理函数模板的实例化隐式实例化显式实例化示例 auto做模板函数的返回值模板参数的匹配原则总结 三、类模板类模板的定义格式类模板的实例化 前言 C模板是C语言中的一种泛型编程技术&#xff0c;可…

服务器渲染技术(JSPELJSTL)

目录 前言 一.JSP 1.基本介绍 3.page指令(常用) 4.JSP三种常用脚本 4.1 声明脚本 <%! code %> 4.2 表达式脚本 <% code %> 4.3 代码脚本 <% code %> 4.4 注释 <%-- 注释 --%> 5. JSP 内置对象 5.1 基本介绍 5.2 九个内置对象 6.JSP域对象 二…

Ubuntu20.04 ISAAC SIM仿真下载使用流程

机器&#xff1a;华硕天选X2024 显卡&#xff1a;4060Ti ubuntu20.04 安装显卡驱动版本&#xff1a;525.85.05 参考&#xff1a; What Is Isaac Sim? — Omniverse IsaacSim latest documentationIsaac sim Cache 2023.2.3 did not work_isaac cache stopped-CSDN博客 Is…

linux 安装openjdk-1.8

安装命令 yum install java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64查看安装路径 find / -name java 默认的安装路径 /usr/lib/jvm 查看到jre 以及java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 配置环境变量 vim /etc/profile 添加的内容 export JAVA_HOME/usr/li…

每日一题:地下城游戏

恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0…

基于非线性控制策略的电力电子电路——DC-DC电路的3种滑模控制器【MATLAB/simulink】

第一种&#xff0c;滞环滑模控制器Buck电路 在滑模控制系统中&#xff0c;采用滞环技术&#xff0c;直接将切换函数转换成开关控制信号&#xff0c;滞环技术被看做一种降低系统结构的切换频率的调制方法&#xff0c;业界也把基于滞环滑模技术实现的滑模控制称为直接滑模控制技…

分类网络总结

欢迎大家订阅我的专栏一起学习共同进步&#xff0c;主要针对25届应届毕业生 祝大家早日拿到offer&#xff01; lets go http://t.csdnimg.cn/dfcH3 目录 4. 经典分类网络与发展 4.1 AlexNet 4.2 VGGNet 4.3 GoogLeNet Inception 4.4 ResNet 4.5 DenseNet 4.6 MobileN…

Python基础04-操作系统中的文件与目录操作

在与操作系统交互时&#xff0c;我们经常需要执行文件和目录的操作。Python提供了丰富的库来帮助我们完成这些任务。以下是一些常见的操作&#xff0c;以及如何使用Python代码来实现它们。 1. 导航文件路径 在不同的操作系统中&#xff0c;文件路径的格式可能不同。Python的o…

提取出图像的感兴趣区域

这是我们的原图像 将图像的数值统计后进行条形图展示 import matplotlib.pyplot as plt from PIL import Image import numpy as np# 图像路径 image_path r"D:\My Data\Figure\OIP.jpg"# 打开图像 image Image.open(image_path)# 将图像转换为numpy数组 image_ar…

关于实验报告添加题注为0以及页面断层的解决办法

1.事情起源于最近在写实验报告和课设说明书时出现图的题注是图0-1等不遵循设置的章节标号&#xff0c;于是我在查询和个人尝试后发现必须设置多级编号并且自定义设置对应的样式为标题几 另外注意设置后必须题注也要设置对应的样式&#xff0c;否则还是0-1&#xff0c;不用编辑域…

全球30米100%水陆覆盖高程

数据是GIS的血液。 熟悉水经注的朋友都应该知道&#xff0c;我们可以为大家提供全球30米和全球12.5米的高程数据&#xff0c;但这两种数据都无法达到全球覆盖。 你可以从《40TB全球12.5米高程DEM原始数据》与《700G全球30米高程DEM原始数据》等文中了解这两种数据的详细说明。…

git简介及安装

Git | Git简介与安装 文章目录 Git | Git简介与安装一、Git简介二、Git安装Linux-centosLinux-ubuntu 一、Git简介 存在需求&#xff1a;对于一个文档&#xff0c;由于编写思路或者当前文档丢失&#xff0c;可能存在想要历史版本的需求&#xff0c;并且需要知道每个版本都修改了…

忘记宝塔账号密码 如何解决

cd /www/server/panel && btpython tools.py panel testpasswd参考 https://www.bt.cn/bbs/thread-1172-1-1.html

(C++) 树状数组

目录 一、介绍 二、一维树状数组 2.1 区间长度 2.2 前驱和后继 2.3 查询前缀和 2.4 点更新 三、一维数组的实现 3.1 区间长度函数 3.2 前缀和 3.3 插入/更新 3.4 封装成类 一、介绍 树状数组&#xff08;Binary Indexed Tree&#xff0c;BIT&#xff09;&#xff0c;又称为 …