安装Docker并配置镜像加速
1. 卸载旧版本(如有)
sudoapt-getremovedockerdocker-engine docker.io containerd runc2. 更新 apt 包索引并安装依赖
sudoapt-getupdatesudoapt-getinstall-yca-certificatescurlgnupg lsb-release3. 添加 Docker 官方 GPG 密钥
sudoinstall-m0755-d/etc/apt/keyringscurl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgsudochmoda+r /etc/apt/keyrings/docker.gpg说明:上面使用了阿里云镜像地址下载 GPG 密钥,访问更稳定。如需使用其他镜像源,可替换为对应地址:
- 腾讯云:
https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg- 中科大:
https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg
4. 设置 Docker 软件源
echo\"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null同样可将
https://mirrors.aliyun.com/docker-ce/linux/ubuntu替换为其他镜像源地址。
5. 安装 Docker Engine
sudoapt-getupdatesudoapt-getinstall-ydocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin6. 验证 Docker 安装
sudodocker--versionsudodockerrun hello-world- 第一行命令应输出版本号,例如:
Docker version 26.x.x, build xxxxx。 - 第二行命令会下载并运行测试镜像,看到
Hello from Docker!即表示安装成功。
7. 配置 Docker 镜像加速器
创建或编辑/etc/docker/daemon.json:
sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me", "https://docker.m.daocloud.io" ] } EOF上面列出了截至2026 年 6 月实测可用的镜像加速器,Docker 会按顺序自动尝试。你也可以只保留自己测试后速度最快的一个。
其他可选地址(如失效可尝试替换):
https://xuanyuan.cloud(轩辕镜像专业版,需登录获取专属地址)https://docker.registry.cyouhttps://dockertest.jsdelivr.fyi
8. 重启 Docker 服务使配置生效
sudosystemctl daemon-reloadsudosystemctl restartdocker9. 验证镜像加速器是否生效
sudodockerinfo|grep-A5"Registry Mirrors"输出中应包含你在daemon.json里配置的镜像地址,例如:
Registry Mirrors: https://docker.1ms.run/ https://docker.xuanyuan.me/ https://docker.m.daocloud.io/看到配置的地址即说明镜像加速器已生效。此时可以执行docker pull拉取一个公共镜像测试速度。
10. (可选)将当前用户加入 docker 组,免 sudo 使用
sudousermod-aGdocker$USERnewgrpdocker执行完成后,注销并重新登录,即可直接使用docker命令而无需sudo。
使用Docker安装Jenkins并配置镜像地址
1. 拉取 Jenkins LTS 镜像
得益于前面配置的 Docker 镜像加速器,拉取速度应比较理想:
dockerpull jenkins/jenkins:lts-jdk21这里因为最新版的jenkins镜像下载起来可能会非常慢,可能下载失败,所以下载LTS版本。
2. 创建持久化目录并设置权限
Jenkins 容器内进程以UID 1000运行,宿主机目录需要对应权限,否则会出现权限不足导致无法写入配置:
sudomkdir-p/opt/jenkins/datasudochown-R1000:1000 /opt/jenkins3. 启动 Jenkins 容器
dockerrun-d\--namejenkins\--restart=unless-stopped\-p8080:8080\-p50000:50000\-v/opt/jenkins/data:/var/jenkins_home\-eJAVA_OPTS="-Dhudson.model.DownloadService.noSignatureCheck=true"\jenkins/jenkins:lts-jdk214. 查看初始管理员密码
# 方式一:查看容器日志dockerlogs-fjenkins# 方式二:直接读取宿主机挂载目录中的密码文件cat/opt/jenkins/data/secrets/initialAdminPassword5. 初次访问与"该 Jenkins 实例似乎已离线"问题
浏览器访问http://<服务器IP>:8080,粘贴初始管理员密码继续。
此时安装向导往往会提示:
“该 Jenkins 实例似乎已离线”(This Jenkins instance appears to be offline)
原因:Jenkins 默认连接官方插件更新中心https://updates.jenkins.io,网络访问受限或超时,导致无法获取可用插件列表,系统误判为离线状态。
解决方案(推荐方案二,修改配置文件最彻底):
方案一:在插件管理高级设置页面直接修改(未完全阻塞时可试)
- 浏览器直接访问
http://<IP>:8080/pluginManager/advanced - 找到Update Site,将默认 URL 修改为华为云镜像地址:
https://mirrors.huaweicloud.com/jenkins/update-center.json - 点击Submit,再点击Check Now
- 返回安装向导页面刷新,看是否恢复在线
方案二:修改宿主机持久化目录配置文件(推荐,最彻底)
注意:如果 Jenkins 因完全无法访问官方更新中心而导致离线,
default.json可能尚未生成。以下步骤分为两步,先让 Jenkins 重新生成default.json,再替换其中的下载地址。
第 1 步:修改更新中心地址,并重新创建容器以跳过签名验证
Jenkins 对 Update Center 的 JSON 签名验证非常严格,使用镜像加速时可能会报错:
SEVERE: ERROR: Signature verification failed in update site 'default'
需要在启动参数中跳过签名检查,同时修改更新中心地址。
由于环境变量必须在创建容器时指定,这里需要删除旧容器后重新docker run(数据卷已挂载到宿主机,删除容器不会丢失数据):
# 停止容器dockerstop jenkins# 修改更新中心地址为华为云镜像(2026.6试了似乎只有华为云能用,访问其他镜像站点的更新中心文件都是404)sudotee/opt/jenkins/data/hudson.model.UpdateCenter.xml<<-'EOF' <?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://mirrors.huaweicloud.com/jenkins/update-center.json</url> </site> </sites> EOF# 重新启动 Jenkinsdockerstart jenkins刷新浏览器页面,此时应不再提示"离线"。你可以选择:
- 安装推荐的插件(Install suggested plugins)
- 选择插件来安装(Select plugins to install)
如果之前已跳过向导或直接进入主界面,后续随时可在http://<服务器IP>:8080/manage/pluginManager/available中安装插件。
这一步先选择安装推荐插件,这时可能有部分插件安装不成功,原因是jenkins版本较低(华为云镜像里的插件版本较新,要求jenkins版本2.556及以上),先点击继续,这时候jenkins的挂载目录下就生成了/updates/default.json文件
版本较低时部分插件安装失败示例:
第 2 步:替换default.json中的官方下载地址,并重启
# 再次停止容器dockerstop jenkins# 替换插件实际下载地址(此时 default.json 已确保存在)sudosed-i's#https://updates.jenkins.io/download#https://mirrors.huaweicloud.com/jenkins#g'/opt/jenkins/data/updates/default.jsonsudosed-i's#https://www.google.com#https://www.baidu.com#g'/opt/jenkins/data/updates/default.json# 重新启动 Jenkinsdockerstart jenkins为什么必须同时修改
default.json?
- 仅修改
hudson.model.UpdateCenter.xml中的更新中心地址,Jenkins 虽然能读取插件列表,但插件实际下载 URL 仍写在default.json中,指向官方地址。- 如果不替换
default.json里的下载域名,后续安装插件时仍会连接官方服务器,导致安装失败或超时。sed第二行将 Google 地址替换为百度,避免部分插件元数据中的外链导致页面加载异常(可选)。
6. 更新jenkins版本
如果docker安装的LTS版本和华为云要求的版本相差不大时,推荐手动更新,按以下步骤操作即可:
在
https://www.jenkins.io/download/下载最新版jenkins.war文件到本地(可能需要魔法)先备份已安装版本的
jenkins.war文件
mkdir-p/opt/jenkins/backupdockercpjenkins:/usr/share/jenkins/jenkins.war /opt/jenkins/backup/jenkins.war.bakmkdir -p /opt/jenkins/backup命令用于确保备份目录存在,如果不存在则创建。
docker cp命令的格式为docker cp <容器名称>:<容器内文件路径> <宿主机目标路径>。
- 将下载的最新版
jenkins.war放到宿主机某个目录,例如/opt/jenkins/,然后复制到容器内替换旧文件:
dockercp/opt/jenkins/jenkins.war jenkins:/usr/share/jenkins/jenkins.war- 启动 Jenkins 容器:
dockerstart jenkins这样就完成了旧版本jenkins.war的备份以及后续的升级操作。升级完成后,要求版本较高的插件变得可用,若发现新的 Jenkins 版本存在问题,可以将备份的jenkins.war.bak文件再复制回容器内替换当前的jenkins.war文件,以恢复到旧版本状态。
7. 验证 Jenkins 与插件功能
- 刷新jenkins页面,完成向导后,创建第一个管理员账户。
- 进入Dashboard → Manage Jenkins → Plugins,确认Available标签页能正常加载出插件列表。
- 安装初始化时下载失败的插件,观察是否能顺利完成下载和安装。
- 进入Installed plugins列表,确认刚安装的插件状态正常,无报错提示。