Docker与DevOps实战训练:从容器管理到全链路项目部署

Docker 资源限制实战:CPU 与内存限制及验证

1. Docker 限制容器资源的技术基础是什么?

Docker 限制容器资源的技术基础主要是 Linux 内核提供的两大机制:控制组(cgroups) 和 命名空间(namespaces)。命名空间负责隔离,控制组负责对运行的容器进行资源限制这两者协同工作,共同实现了资源的隔离与限制。

练习创建 Ubuntu 容器,限制 CPU 1 核、内存 512MB,用docker stats验证。

首先下载Ubuntu镜像

检查一下

然后使用指令创建符合要求的主机

docker run -d --name limited-test --cpus="1.0" -m 512m ubuntu:20.04 sleep infinity

-d:后台运行容器

--name limited-test:给容器命名为 "limited-test"

--cpus="1.0":限制容器最多使用 1 个 CPU 核心

-m 512m:限制容器内存使用为 512MB

ubuntu:20.04:使用 Ubuntu 20.04 镜像

sleep infinity:让容器持续运行(否则会立即退出)

查看是否符合要求

显示符合要求,实验通过

堡垒机 JumpServer 容器化部署与用户权限管理

2. Docker-compose 部署 JumpServer 的核心优势是什么?

一键化部署配置简单,可以直接解决服务依赖和启动顺序管理,降低手动配置出错的概率。统一的配置管理,所有环境变量和配置都集中在 docker-compose.yml中,易于管理和修改。易于备份和迁移。

练习用 Docker-compose 部署 JumpServer,创建普通用户并分配资产权限。

下载官方提供的compose文件

下载官方的变量文件

写一个可以提取密钥并修改变量文件的脚本

配置变量文件

配置docker-compose文件

然后输入docker-compose up -d 启动

通过浏览器来访问

初始账户密码是

用户:admin

密码:ChangeMe

然后会自动让你更改密码

然后再次登录,会有一个条款认证,同意即可

先创建用户组

创建普通用户

在右侧的用户列表,点击创建

创建并加入组

创建并加组成功

接下来进行分配资产的操作

先创建资产

然后进行分配

分配成功

登录eddy用户

可以看到可以链接的资产,表明分配成功

Git 核心概念实践:暂存区、提交与分支操作

3.Git "暂存区" 的核心作用是什么?初始化仓库,完成文件创建、提交、分支切换操作。

Git 的数据存储从物理上分为当前项目目录和当前项目目录下的隐藏子目录.git,分别称为工作区和版本库,Git 版本库逻辑上又分为暂存区和本地仓库

也称为索引区,缓存区,用于存储在工作区中对代码进行修改后的文件所保存的地方,只有放入此区的文件才能被git进行管理,使用 git add添加,对应为<项目目录>/.git/index文件,暂存区主要用于临时保存文件少量变更,类似于邮件中的草稿箱,当变更累积到一定阶段,希望生成里程碑式的结果时,会使用commit,将暂存区的变更一次性的批量提交到本地仓库。

实践

创建并进入相关工作目录

初始化项目

配置用户及其邮箱

添加暂存区并提交数据

查看现有分支

创建

切换

私有镜像仓库强化:Harbor HTTPS 证书配置与验证

4.生成自签证书,配置 Harbor HTTPS 并验证连接。

微服务基石:基于 Docker-compose 的 Nacos 与 Gateway 服务注册验证

5.用 Docker-compose 启动 Nacos 和 Gateway 服务,验证注册成功。

创建项目目录结构

创建docker-compose.yml文件

创建nacos/init.d/custom.properties文件

创建gateway/pom.xml文件

创建gateway/src/main/resources/application.yml

创建Gateway主类 (gateway/src/main/java/com/example/GatewayApplication.java)

创建gateway/Dockerfile文件

docker-compose up -d启动

浏览器访问

启动成功!

一站式 DevOps 平台搭建:Docker 部署 GitLab 及权限管理

6.Docker 安装 Gitlab,创建用户和项目并分配权限。

创建GitLab数据目录

创建/srv/gitlab/docker-compose.yml文件

启动

查看

等到其healthy就启动好了,然后获取密码

浏览器访问

创建新用户

点击admin

点击左侧Users

点击

填写信息

然后点击create user

创建成功

接下来创建项目

登录后点击 "+" 按钮 → "New project"

选择 "Create blank project"

填写项目信息:

Project name: 项目名称(如:my-project)

Project slug: 项目URL标识

Visibility Level: 选择可见性级别(Private/Internal/Public)

点击 "Create project"

通过Web界面分配权限

进入项目页面

点击左侧菜单 "Project information" → "Members"

点击 "Invite members"

输入用户名或邮箱

选择权限级别:

Guest: 只读访问

Reporter: 可以查看和创建issue

Developer: 可以推送代码、创建分支

Maintainer: 可以管理项目设置

Owner: 完全控制

然后点击 "Invite"

效果如图

全栈项目实战:RuoYi-Vue 前后端分离项目容器化部署与跨域配置

  1. JAVA 项目 RuoYi-Vue 前后端架构部署,部署前后端服务,配置跨域并成功登录。

首先分配一下

在每台主机先安装必要工具

apt update

apt install -y curl wget vim git

配置所有主机的hosts文件,添加以下内容

10.0.0.100 www.wang.org

10.0.0.101 ui.wang.org

10.0.0.102 api.wang.org

10.0.0.103 mysql.wang.org redis.wang.org

在10.0.0.103上部署MySQL和Redis

apt install mysql-server -y

mysql_secure_installation

对MySQL进行配置

安装apt install redis-server -y

修改配置

重启redis

配置防火墙

在10.0.0.102上部署RuoYi后端

安装Java和Maven

下载和配置RuoYi后端

创建项目目录

下载RuoYi源码

修改数据库连接配置

vim ruoyi-admin/src/main/resources/application-druid.yml

vim ruoyi-admin/src/main/resources/application.yml

构建和启动后端

构建项目

mvn clean package -Dmaven.test.skip=true

启动后端服务

cd ruoyi-admin/target

nohup java -jar ruoyi-admin.jar > ruoyi.log 2>&1 &

检查服务是否启动

ps aux | grep java

netstat -tlnp | grep 8080

在10.0.0.101上部署RuoYi前端

安装Node.js和npm

检查

下载和配置RuoYi前端

创建项目目录

git clone https://github.com/yangzongzhuan/RuoYi-Vue.git

npm install

修改配置vim .env.production

构建前端项目

npm run build:prod

ls -la dist/

安装和配置nginx

对100主机进行安装nginx和配置

启用配置

初始化数据

重启后端服务

停止现有服务

pkill -f ruoyi-admin.jar

重新启动

cd /opt/ruoyi/RuoYi-Vue/ruoyi-admin/target

nohup java -jar ruoyi-admin.jar > ruoyi.log 2>&1 &

打开浏览器访问,成功登录,搭建成功

相关推荐
神秘的土鸡1 小时前
Linux中使用Docker构建Nginx容器完整教程
linux·nginx·docker
Empty_7772 小时前
K8S-Pod资源对象
java·容器·kubernetes
人工智能训练3 小时前
Windows系统Docker中Xinference 集群无法启动的解决方法
linux·运维·服务器·windows·docker·容器·xinference
Full Stack Developme3 小时前
Linux YUM、Docker 和源码编译
linux·运维·docker
java_logo4 小时前
Prometheus Docker 容器化部署指南
运维·人工智能·docker·容器·prometheus·ai编程
jyan_敬言4 小时前
【Docker】Kubernetes部署容器化应用程序
c++·笔记·其他·docker·容器·kubernetes·学习方法
一周困⁸天.5 小时前
K8S-Pod资源对象
linux·容器·kubernetes
weixin_307779135 小时前
基于AWS Global Accelerator和ECS Fargate的最小化延迟与快速故障转移架构
容器·云计算·aws
人工智能训练6 小时前
Docker中Dify镜像由Windows系统迁移到Linux系统的方法
linux·运维·服务器·人工智能·windows·docker·dify