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

news2024/12/23 12:00:15

目录

先有个大概了解

基本概念

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.coloradmin.cn/o/1613472.html

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

相关文章

随机森林计算指标重要性—从决策树到随机森林Python实现

文章目录 前言一、节点二、决策树2.1 案例分析——优良的水稻2.2 案例分析——家庭财富水平 三、随机森林三、Python代码实现3.1 关键问题3.1.1 节点的表示3.1.2 决策树的表示** 根节点划分左右子树的依据 **3.1.3 随机森林的构造与重要性的表示 3.2 节点类3.2 决策树类3.2.1 初…

Linux下:gcc/g++调试工具gdb

gdb 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 gdb mybin debug和release debug debug模式下生成的可执行程序会添加调试信息&#xff0c;所以生成的可执行程序会较大 在使用gcc/g进行编译的时…

工欲善其事必先利其器(在windows使用clion编程,远程连接linux服务器)

工欲善其事必先利其器&#xff08;在windows使用clion编程&#xff0c;远程连接linux服务器&#xff09; 前提条件 需要在windows上安装clion&#xff0c;在linux上安装cmake(编译项目用)和gdp(debug用) cmake安装 我这里使用的是3.24.2版本的cmake。 首先当然是下载cmake…

物联网(iot)深度解析——FMEA软件

物联网即IoT&#xff0c;是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术&#xff0c;实时采集任何需要监控、连接、互动的物体或过程&#xff0c;采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息&#xff0c;通过…

BMR:基于Boostrapping多视图的虚假新闻检测

一、概述 文章提出了三种视图信息来表示一篇新闻&#xff1a;文本、图像结构、图像语义。然后设计了改进的多门混合专家系统&#xff08;iMMoE&#xff09;来进行信息融合。保留单模态信息来保证特征对新闻的保真性&#xff0c;增加的多模态信息能保证不同模态的一致性&#xf…

12.Hexo helpers类似函数和data folder数据文件夹

helper Hexo里的helper&#xff0c;或者说是函数 基本上就是小函数&#xff0c;可以在layout布局中使用&#xff0c;可以允许做一些事情 如字符串操作、检查true或false、检查是否在一个页面上、打印出某个页面中的日期或时间特定格式 打开index.ejs trim 可以通过 <%…

模板类,模板函数初识

前提&#xff1a; 模板概念&#xff1a;&#xff08;引用自菜鸟教程&#xff09; 即&#xff1a;模板是蓝图&#xff08;类或对象&#xff09;的蓝图&#xff08;通过传不同信息&#xff08;类型&#xff09;创建不同函数和类&#xff09;&#xff0c;能使编程不受类型限制&am…

【代码随想录刷题记录】LeetCode34在排序数组中查找元素的第一个和最后一个位置

题目地址 最近忙活实验&#xff0c;实在没空刷题&#xff0c;这个题对我来说难度还蛮大的&#xff0c;尤其是理解那个找左边界和找右边界的条件&#xff0c;后来我按照自己的理解写了出来&#xff08;感觉给的答案解释起来有点反认识规律&#xff09;&#xff0c;所以我从0开始…

ASP.NET Core 3 高级编程(第8版) 学习笔记 04

第 19 章主要介绍 Restful Service 的相关知识。Restful Service 的核心内容是&#xff1a;&#xff08;1&#xff09;HTTP 请求或 HTTP 动词&#xff0c;用 HTTP 请求表达不同的操作&#xff0c;最好遵守惯例。&#xff08;2&#xff09;资源&#xff0c;通过 PATH 结合 paylo…

[Linux][多线程][一][线程基础概念][进程VS线程][线程控制]详细讲解

目录 0.预备知识1.页表的映射2.二级页表 1.线程基础概念1.什么是线程&#xff1f;2.理解流程梳理 -- 如何理解线程&#xff1f;3.线程优点4.线程缺点5.线程异常6.线程用途 2.进程VS线程1.进程和线程2.进程和线程的资源共享3.进程和线程的关系4.关于进程线程的问题 3.线程控制1.…

机器学习(二)之监督学习

前言&#xff1a; 上一节大概讲解了几种学习方式&#xff0c;下面几张就具体来讲讲监督学习的几种算法。 以下示例中和都是权重的意思&#xff01;&#xff01;&#xff01; 注&#xff1a;本文如有错误之处&#xff0c;还请读者指出&#xff0c;欢迎评论区探讨&#xff01; 1…

解释一下“暂存区”的概念,在Git中它扮演什么角色?

文章目录 暂存区在Git中的概念与作用什么是暂存区&#xff08;Staging Area&#xff09;暂存区的位置和结构 暂存区在Git工作流程中的角色1. 分离工作区与版本库的交互示例代码与操作步骤示例1&#xff1a;将工作区的修改添加至暂存区 2. 控制提交内容的粒度示例2&#xff1a;分…

玩转Virtual Box虚拟机

玩转Virtual Box虚拟机 虚拟化技术和虚拟机简介 什么是虚拟化技术&#xff1f; 虚拟化技术是将计算机的各种硬件资源予以抽象、转换、分割、组合的一种计算机技术。虚拟化技术打破了实体结构间不可切割的障碍&#xff0c;从而使用户可以按照需求重新组合硬件资源&#xff0c…

C/C++开发,opencv-ml库学习,支持向量机(SVM)应用

一、OpenCV支持向量机&#xff08;SVM&#xff09;模块 1.1 openCV的机器学习库 OpenCV-ml库是OpenCV&#xff08;开放源代码计算机视觉库&#xff09;中的机器学习模块&#xff0c;常用于分类和回归问题&#xff0c;它是 OpenCV 众多modules下的一个模块。 该模块提供了一系列…

第15届蓝桥杯题解

A题 结果&#xff1a;2429042904288 思路很简单 前20个数分别是 20 24 40 48 60 72 80 96 100 120 140 144 160 168 180 192 200 216 220 240 第2 4 6 8 12 ...n个数分别是24的 1倍 2倍 3倍 4倍 6倍 n/2倍 所以第202420242024 个数就是 24的 101210121012倍 B题 答案&am…

十一、Yocto集成tcpdump等网络工具

文章目录 Yocto集成tcpdump等网络工具networking layer集成 Yocto集成tcpdump等网络工具 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第十一篇文章&#xff1a; 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于raspberrypi 4B) 三、Yocto创建自定义的lay…

Docker 安装 Mongo

创建宿主机目录 在你的宿主机上创建必要的目录来存储 MongoDB 的数据和配置文件。这样做可以保证即使容器被删除&#xff0c;数据也能得到保留。 mkdir -p /develop/mongo/data mkdir -p /develop/mongo/config创建 MongoDB 配置文件 创建一个名为 mongod.conf 的 MongoDB 配…

arping命令详解

arping – send ARP REQUEST to a neighbour host. arping 是一个在网络中发送 ARP 请求以查找特定 IP 地址对应的 MAC 地址的命令行工具。它的功能类似于 ping 命令&#xff0c;基于ARP协议报文的交互机制&#xff0c;只能测试同一网段或子网的网络主机的连通性。 ARP 是 Add…

【声呐仿真】学习记录1.5-使用docker配置dave(先看这个!)、解决一些问题

【声呐仿真】学习记录1.5-使用docker配置dave、解决一些问题 docker配置dave123 以下为未完全解决问题的随手记录&#xff0c;待日后解决再补充1.pcap、png解决&#xff0c;libusb未解决&#xff08;不要修改libusb相关的&#xff09;2.ISO C3.换源4.自动安装相关依赖 docker配…

【保姆级讲解下gateway基本配置】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…