使用 Docker 部署 Jenkins 并设置初始管理员密码

使用 Docker 部署 Jenkins 并设置初始管理员密码

在这里插入图片描述

每一次开始,我都特别的认真与胆怯,是因为我期待结局,也能够不会那么粗糙,不会让我失望,所以,就多了些思考,多了些拘束,所以,我也就格外重视第一次!

在这篇博客中,我们将介绍如何使用 Docker 部署 Jenkins,并在 /usr/local/src/ 目录下创建相关卷。

安装Docker

1、选择要安装的平台

Docker要求CentOS系统的内核版本高于3.10

 

sh

复制代码

uname -r #通过 uname -r 命令查看你当前的内核版本

安装文档地址

docs.docker.com/engine/inst…

2、选择要安装的操作系统

img

3、首先卸载已安装的Docker

使用Root权限登录 Centos。确保yum包更新到最新。

 

sh

复制代码

sudo yum update

如果你的操作系统没有安装过Docker , 就不需要执行卸载命令。

 

sh

复制代码

sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

4、建立仓库

安装Docker所需要的一些工具包

 

sh

复制代码

sudo yum install -y yum-utils

建立Docker仓库 (映射仓库地址)

 

sh

复制代码

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5、安装Docker引擎

 

sh

复制代码

sudo yum install docker-ce docker-ce-cli containerd.io

6、启动Docker

 

sh

复制代码

sudo systemctl start docker

7.设置docker镜像仓库

有时候,我们pull镜像的时候非常慢,所以需要设置一下国内的镜像仓库作为下载源

 

sh

复制代码

第一步:新建或编辑daemon.json vi /etc/docker/daemon.json 第二步:daemon.json中编辑如下 { "registry-mirrors": ["http://hub-mirror.c.163.com"] } 第三步:重启docker systemctl restart docker.service 第四步:执行docker info查看是否修改成功 docker info

以下列举出国内的几个下载地址:

 

sh

复制代码

1.网易 http://hub-mirror.c.163.com 2.Docker中国区官方镜像 https://registry.docker-cn.com 3.中国科技大学 https://docker.mirrors.ustc.edu.cn 4.阿里云容器服务 https://cr.console.aliyun.com/ 首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址,类似于“https://1234abcd.mirror.aliyuncs.com”

8.安装docker-compose

Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:github.com/docker/comp…

运行以下命令以下载 Docker Compose 的当前稳定版本:

 

sh

复制代码

$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装其他版本的 Compose,请替换 v2.2.2。

Docker Compose 存放在 GitHub,不太稳定。 你可以也通过执行下面的命令,高速安装 Docker Compose。

 

sh

复制代码

curl -L [https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-](https://link.zhihu.com/?target=https%3A//get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-)`uname -s`-`uname -m` > /usr/local/bin/docker-compose

将可执行权限应用于二进制文件:

 

text

复制代码

$ sudo chmod +x /usr/local/bin/docker-compose

创建软链:

 

text

复制代码

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

 

text

复制代码

$ docker-compose version cker-compose version 1.24.1, build 4667896b

9.docker常用命令

基本命令

  1. 启动 Docker 服务

     

    sh

    复制代码

    systemctl start docker
  2. 检查 Docker 版本

     

    sh

    复制代码

    docker --version

镜像操作

  1. 从 Docker Hub 拉取镜像

     

    sh

    复制代码

    docker pull <image_name>

    例如:

     

    sh

    复制代码

    docker pull nginx
  2. 列出本地镜像

     

    sh

    复制代码

    docker images
  3. 删除本地镜像

     

    sh

    复制代码

    docker rmi <image_name>
  4. 构建镜像

     

    sh

    复制代码

    docker build -t <image_name> .

容器操作

  1. 运行容器

     

    sh

    复制代码

    docker run -it --name <container_name> <image_name>

    例如:

     

    sh

    复制代码

    docker run -it --name my_nginx nginx
  2. 列出运行中的容器

     

    sh

    复制代码

    docker ps
  3. 列出所有容器(包括停止的容器)

     

    sh

    复制代码

    docker ps -a
  4. 停止容器

     

    sh

    复制代码

    docker stop <container_name>
  5. 启动已停止的容器

     

    sh

    复制代码

    docker start <container_name>
  6. 删除容器

     

    sh

    复制代码

    docker rm <container_name>
  7. 进入运行中的容器

     

    sh

    复制代码

    docker exec -it <container_name> /bin/bash

数据卷操作

  1. 创建数据卷

     

    sh

    复制代码

    docker volume create <volume_name>
  2. 列出数据卷

     

    sh

    复制代码

    docker volume ls
  3. 删除数据卷

     

    sh

    复制代码

    docker volume rm <volume_name>

网络操作

  1. 创建网络

     

    sh

    复制代码

    docker network create <network_name>
  2. 列出网络

     

    sh

    复制代码

    docker network ls
  3. 删除网络

     

    sh

    复制代码

    docker network rm <network_name>

其他操作

  1. 查看容器日志

     

    sh

    复制代码

    docker logs <container_name>
  2. 检查 Docker 系统资源使用情况

     

    sh

    复制代码

    docker system df

安装Jenkins

1.拉取 Jenkins 镜像

从 Docker Hub 拉取最新的 Jenkins 镜像。

 

bash

复制代码

docker pull jenkins/jenkins:lts

2.创建 Docker 卷

在 /usr/local/src/ 目录下创建一个用于存储 Jenkins 数据的目录。

 

bash

复制代码

mkdir -p /usr/local/src/jenkins/data

3.运行 Jenkins 容器

使用 Docker 启动 Jenkins 容器,并挂载前面创建的目录。

 

bash

复制代码

docker run -d --name jenkins \ -v /usr/local/src/jenkins/data:/var/jenkins_home \ -p 8080:8080 \ -p 50000:50000 \ jenkins/jenkins:lts

在上述命令中:

  • -d:表示容器将在后台运行。
  • --name jenkins:指定容器的名称为 jenkins
  • -v /usr/local/src/jenkins/data:/var/jenkins_home:将主机的 /usr/local/src/jenkins/data 目录挂载到容器内的 Jenkins 数据目录 /var/jenkins_home
  • -p 8080:8080:将容器的 8080 端口映射到主机的 8080 端口。
  • -p 50000:50000:将容器的 50000 端口映射到主机的 50000 端口,用于 Jenkins 代理通信。

如果启动失败,查看容器日志,

 

sh

复制代码

docker logs 容器ID

如果是如下报错

 

sh

复制代码

INSTALL WARNING: User: missing rw permissions on JENKINS_HOME: /var/jenkins_home touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

那就给容器挂载目录授权

 

sh

复制代码

sudo chown -R 1000:1000 /usr/local/src/jenkins sudo chown -R 1000:1000 /usr/local/src/jenkins/*

3.验证部署

打开浏览器并访问 http://<你的主机IP>:8080,在首次启动时,Jenkins 将生成一个初始管理员密码。可以通过以下命令查看初始密码:

 

sh

复制代码

docker logs 容器ID

在这里插入图片描述

或者直接查看文件中的密码

 

sh

复制代码

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

在这里插入图片描述

初始化配置完成后,可以使用 Jenkins Web 界面创建新的用户、配置插件和管理 Jenkins 实例。

4.其他常用 Docker 命令

  • 查看容器日志:

     

    bash

    复制代码

    docker logs -f jenkins
  • 进入容器内部:

     

    bash

    复制代码

    docker exec -it jenkins /bin/bash
<think>好的,用户之前问了Docker是否有macOS镜像,现在他们想知道如何使用Docker部署Jenkins打包iOS应用。首先,我需要回忆之前的回答,其中提到Docker镜像是基于Linux的,而macOS无法作为Docker镜像运行。现在用户的问题可能涉及到在Docker容器中打包iOS应用,这需要macOS环境,但根据之前的结论,这在Docker中是不可能的。 用户可能不太清楚Docker的限制,尤其是在macOS环境下构建iOS应用的需求。需要明确的是,iOS应用通常需要Xcode,而Xcode只能在macOS上运行。Docker容器无法提供合法的macOS环境,因此直接使用Docker部署Jenkins来打包iOS应用是不可行的。 接下来,我需要思考如何给出替代方案。可能需要分步骤:首先在macOS主机上直接安装Jenkins,然后配置环境来打包iOS应用。同时,可以提到使用Docker部署Jenkins,但指出其局限性,即在Docker中无法执行macOS特定的构建步骤。 另外,用户可能希望有一个自动化的CI/CD流程,所以需要指导他们如何将Jenkins与macOS主机结合,比如使用Jenkins的节点配置,将构建任务分发到物理macOS机器上执行。同时,需要提醒用户注意法律问题,确保他们使用的macOS环境符合苹果的许可协议。 还要考虑用户的技术水平,可能需要详细说明每一步骤,包括Docker部署Jenkins的具体命令,如何配置Jenkins任务,以及如何设置SSH连接到macOS构建节点。此外,要强调安全性和最佳实践,比如使用镜像加速、数据持久化、权限管理等。 最后,总结重点,明确Docker的局限性,提供可行的替代方案,确保用户理解在现有技术条件下如何实现他们的目标,同时遵守相关法律法规。</think>以下是使用Docker部署Jenkins结合macOS实现iOS应用打包的详细指南。由于iOS应用构建的**特殊系统依赖**,本方案采用**混合架构模式**实现: --- ### 一、核心限制说明(必须理解) 1. **Docker容器无法直接打包iOS应用**: - iOS应用构建必须依赖: - ✅ macOS操作系统(苹果法律强制要求) - ✅ Xcode工具链(含`xcodebuild`) - ✅ iOS SDK与证书体系 - 这些组件**无法合法运行在Docker容器中** 2. **解决方案架构**: ``` Docker容器(Jenkins主节点) → SSH连接 → 物理macOS设备(构建代理节点) ``` --- ### 二、Docker部署Jenkins主节点 #### 步骤1:创建数据卷(持久化配置) ```bash docker volume create jenkins_home ``` #### 步骤2:运行Jenkins容器 ```bash docker run -d \ --name jenkins \ -p 8080:8080 -p 50000:50000 \ -v jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkins/jenkins:lts-jdk11 ``` #### 步骤3:初始配置 1. 访问 `http://localhost:8080` 输入初始密码 2. 安装推荐插件(需包含`SSH Pipeline Steps`) --- ### 三、配置macOS构建代理节点(关键步骤) #### 步骤1:在macOS设备上 1. 开启SSH服务: ```bash sudo systemsetup -setremotelogin on ``` 2. 创建专用账号: ```bash sysadminctl -addUser jenkins-agent -password <your_password> ``` #### 步骤2:在Jenkins网页端 1. **管理Jenkins → 节点管理 → 新建节点** 2. 配置参数示例: ```properties Name: macos-builder Labels: ios-builder Launch method: Launch agents via SSH Host: your_macos_ip Credentials: 添加SSH密钥对或用户名/密码 ``` --- ### 四、创建iOS构建流水线 #### Jenkinsfile示例(声明式流水线) ```groovy pipeline { agent none stages { stage('Checkout') { agent any steps { git 'https://github.com/your-org/ios-project.git' } } stage('Build iOS') { agent { label 'ios-builder' // 指定macOS节点 } steps { sh ''' xcodebuild -workspace MyApp.xcworkspace \ -scheme MyApp \ -destination "platform=iOS Simulator,name=iPhone 14" \ clean build ''' archiveArtifacts artifacts: '**/*.ipa' } } } } ``` --- ### 五、证书与签名处理(安全建议) 1. **Keychain自动化方案**: ```bash # 在macOS节点预先执行 security unlock-keychain -p <password> /Users/jenkins-agent/Library/Keychains/login.keychain-db ``` 2. **Fastlane集成建议**: ```ruby # Fastfile配置示例 lane :build_ipa do match(type: "appstore") gym(workspace: "MyApp.xcworkspace", scheme: "MyApp", export_method: "app-store") end ``` --- ### 六、安全增强措施 1. **网络隔离**: ```bash docker network create --driver bridge jenkins-net ``` 2. **镜像加速**: ```bash docker run ... -e JENKINS_OPTS="--mirror=https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json" ``` 3. **权限控制**: ```bash docker exec -u root jenkins chown -R jenkins:jenkins /var/jenkins_home ``` --- ### 七、常见问题排查 | 现象 | 解决方案 | |--------------------------|-----------------------------------| | SSH连接超时 | 检查macOS防火墙与`ssh -T`测试连接 | | Xcode版本不匹配 | 在macOS节点安装指定版本Xcode | | 证书签名失败 | 检查钥匙串权限与证书有效期 | | 模拟器无法启动 | 确保Xcode命令行工具已安装 | --- ### 技术总结 1. **Docker的边界**:仅作为Jenkins主节点运行平台 2. **合法构建要求**:iOS打包必须在物理macOS设备完成 3. **混合架构价值**:既利用Docker部署便利性,又满足苹果的合规要求 如需完全容器化的iOS构建环境,目前唯一合法途径是使用苹果官方提供的[Cloud Build Service](https://developer.apple.com/cloud/),但这属于付费企业级解决方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值