15min运维之Docker运行Jenkins从开始到放弃

某新环境需要Jenkins,准备用docker “一条run命令搞定“。其他工具用docker屡试不爽,这次Jenkins是从开始到放弃。

Jenkins作为CI工具,构建过程需依赖对应的构建环境,如:maven、java、npm、docker等。如今是docker盛行的年代,什么都可以打成镜像,docker倒是成了标配。

简单环境示例

Jenkins dockerhub 官方镜像

假设只需要准备maven和java环境,只要把宿主机的maven和jdk挂载到容器即可,再给容器中配置下PATH变量

docker run -d --restart=always --name jenkins \
-p 8085:8080 \
-p 50000:50000 \
-v /usr/local/custom:/lib/custom \
-v /jenkins/data:/var/jenkins_home \
--env-file=/jenkins/env \
jenkins

上述命令中,/usr/local/custom 存放了 apache-maven-3.3.9jdk1.8.0_121/jenkins/data 用于存储jenkins的数据。

/jenkins/env 存储了环境变量,如下:

JAVA_HOME=/lib/custom/jdk1.8.0_121
M2_HOME=/lib/custom/apache-maven-3.3.9
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/lib/custom/jdk1.8.0_121/bin:/lib/custom/apache-maven-3.3.9/bin

这样一个简单的CI环境就OK了。

Docker环境示例

Using Docker-in-Docker for your CI or testing environment? Think twice
The simple way to run Docker-in-Docker for CI
在(Docker里的)Jenkins里运行Docker

当Jenkins本身就是容器时,在容器里面构建镜像就有一丢丢麻烦了,有2个方案:

  • DinD(Docker-in-Docker):基于Jenkins官方镜像直接安装docker做一个新镜像,形成一个完整的隔离环境。

  • DooD(Docker-outside-of-Docker):将宿主机的docker sock映射到Jenkins容器,直接用宿主机的docker,相当于把一切又委托给了宿主机。

我选了DooD,踩了几个坑,尽非功夫,直接放弃了。有兴趣的伙伴可以参考上面的三篇文章,描述的非常清楚。

小结

无论是DinD,还是DooD,目的都是为了CI。DooD其实没啥意义,DinD又有点作,直接在宿主机安装不就得了。

Jenkins作为CI工具,可以非常稳定的运行在宿主机上,也不存在迁移的问题(当然,如果主机配置低,后续JOB又多,还是得迁移或主机升配),直接部署在主机上是最优选择。

因此,是否以Docker来运行某个产品,得根据具体情况来确定。

本篇纯属技术小伙的好奇心驱使。


欢迎关注陈同学的公众号,一起学习,一起成长

<think>嗯,用户想了解如何构建基于CentOS的Linux运维系统以及需要的功能。首先,我需要理清构建步骤,可能包括系统安装、初始化配置、服务部署、安全加固和监控设置。然后,功能列表可能涵盖自动化部署、监控、日志管理、备份恢复、安全审计等。 得先确定步骤是否合理。安装CentOS是最基础的,可能需要最小化安装以减少攻击面。接着系统初始化,比如更新系统、配置网络、设置时区和NTP同步,这些都很重要。然后是安装运维工具,比如Ansible、Prometheus、ELK这些常用工具。 安全加固方面,防火墙配置、SSH加固、SELinux设置都是必须的。用户提到的等保文档可能有相关建议,应该参考引用里的内容。比如关闭不必要的服务,设置强密码策略,定期更新系统补丁。 监控和日志管理也是关键部分,需要部署监控工具实时查看系统状态,收集和分析日志。备份和恢复策略不能少,定期备份关键数据,测试恢复流程。 功能列表里,自动化运维、集中监控、日志分析、安全管理、高可用架构、容器支持都是重点。可能需要结合用户提到的容器镜像分层结构,比如Docker的使用,优化镜像管理。 另外,用户提供的引用中提到了容器共享宿主机内核,所以在构建运维系统时可能需要考虑容器化部署,比如使用Docker或Kubernetes,但CentOS环境下需要注意兼容性和配置。 还要考虑用户可能的实际需求,比如是否有多节点管理、是否需要自动化脚本、如何集成CI/CD流程。可能需要分步骤详细说明,确保每个环节都覆盖到。 最后,生成相关问题时,要围绕构建步骤和功能,比如如何选择运维工具、安全加固的具体措施、监控系统的实现方法等。确保问题能帮助用户深入理解各个部分。</think>### 构建基于 CentOS 的 Linux 运维系统步骤 #### 一、基础环境搭建 1. **操作系统安装** - 选择 CentOS 7/8 最小化安装,减少冗余软件包 - 分区规划:建议 `/boot`(1GB)、`swap`(内存2倍)、`/`(剩余空间) - 使用 Kickstart 实现自动化批量安装[^1] 2. **系统初始化配置** ```bash # 更新系统及内核 sudo yum update -y --security # 配置静态IP nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 # 设置时区同步 timedatectl set-timezone Asia/Shanghai systemctl enable chronyd ``` #### 二、核心功能部署 1. **集中化管理工具** - Ansible 部署(控制节点): ```bash yum install epel-release -y yum install ansible -y ``` - 配置主机清单 `/etc/ansible/hosts`: ``` [web_servers] 192.168.1.101 ansible_ssh_user=root 192.168.1.102 ansible_ssh_port=2222 ``` 2. **监控告警系统** - Prometheus + Grafana 部署: ```bash # 安装Node Exporter(所有节点) wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xzf node_exporter-*.tar.gz ./node_exporter & ``` 3. **日志分析平台** - ELK Stack 部署(Elasticsearch 7.x): ```yaml # docker-compose.yml 示例 version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2 ports: - "9200:9200" ``` #### 三、安全加固实践 1. **基础安全配置** ```bash # 防火墙规则 firewall-cmd --permanent --add-service=http firewall-cmd --reload # SSH加固 sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config systemctl restart sshd ``` 2. **等保合规配置** - 密码策略修改 `/etc/login.defs`: ``` PASS_MAX_DAYS 90 PASS_MIN_LEN 8 ``` - 审计日志配置: ```bash yum install audit -y auditctl -a always,exit -F arch=b64 -S execve ``` #### 四、运维系统功能列表 | 功能模块 | 关键组件 | 技术实现 | |----------------|-------------------------------|--------------------------------------------------------------------------| | 自动化部署 | Ansible/Terraform | YAML 剧本定义基础设施即代码 | | 监控告警 | Prometheus+Alertmanager | 使用 `node_exporter` 采集指标,`rate(http_requests_total[5m]) > 100` 触发告警 | | 日志分析 | ELK/EFK | Filebeat 日志采集,Kibana 可视化分析 | | 容器管理 | Docker/Kubernetes | 使用 `podman` 兼容 Docker 命令,部署 Kubeadm 集群 | | 配置管理 | Git + Jenkins | Git 仓库存储配置,Jenkins 实现 CI/CD 流水线 | | 备份恢复 | Borgmatic/Restic | 增量备份策略:`borg create --stats /backup::'{hostname}-{now}' /data` | #### 五、性能优化建议 1. 内核参数调优 `/etc/sysctl.conf`: ```conf net.core.somaxconn = 65535 vm.swappiness = 10 ``` 2. 存储优化:使用 XFS 文件系统并启用 `-d su=256k,sw=10` §§ 1. 如何实现 CentOS 系统的自动化安全补丁更新? 2. 在混合云环境中如何统一管理 CentOS 和麒麟系统? 3. 容器化部署时如何保持 CentOS 基础镜像的最小化?[^2] 4. 如何验证运维系统符合等保2.0三级要求? --- **引用说明** : 系统优化与安全加固参考等保要求文档 : 容器镜像分层结构实现原理参考 Docker 官方文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值