Dokcer如何容器部署及常见问题

news2025/1/13 7:40:00

本文讲解通过Docker部署Jenkins过程及遇到的问题。
在这里插入图片描述

通过 Docker 部署 Jenkins

使用 Docker 来部署 Jenkins 是一个快速且高效的方式。以下是使用 Docker 部署 Jenkins 的分步骤指南:

1. 安装 Docker

如果你的系统上还没有安装 Docker,请根据操作系统执行以下操作:

  • 对于 Linux(以 Ubuntu 为例):
    sudo apt update
    sudo apt install docker.io -y
    sudo systemctl start docker
    sudo systemctl enable docker
    

检查 Docker 是否安装成功,查看版本:

docker --version

2. 拉取 Jenkins Docker 镜像

从 Docker Hub 拉取Jenkins的镜像(lts 长期支持版本):

docker pull jenkins/jenkins:lts

如果你想要最新版本,可以拉取:

docker pull jenkins/jenkins

3. 运行 Jenkins 容器

运行 Jenkins 时,需要暴露一些端口并挂载一个卷以保持 Jenkins 的数据持久性。

使用以下命令运行 Jenkins:

docker run -d -p 8080:8080 -p 50000:50000 --name jenkins \
  -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
命令详解:
  • -d: 以后台模式运行容器。
  • -p 8080:8080: 将 Jenkins 内部的 8080 端口映射到主机的 8080 端口。
  • -p 50000:50000: 映射 50000 端口,用于 Jenkins 代理通信。
  • --name jenkins: 为容器命名为 “jenkins”。
  • -v jenkins_home:/var/jenkins_home: 将 Docker 卷 jenkins_home 挂载到容器内的 Jenkins 主目录。这样可以确保数据在容器重启后不会丢失。

现在你可以通过浏览器访问 Jenkins,地址为 http://localhost:8080

4. 解锁 Jenkins

首次运行 Jenkins 时,你需要输入初始管理员密码进行解锁。

  1. 查看日志以找到管理员密码:

    docker logs jenkins
    

    在日志中查找以下内容:

    Jenkins initial setup is required. Please use the following password to proceed to installation:
    <initialAdminPassword>
    
  2. 复制密码并在 Jenkins Web 界面中输入(http://localhost:8080)。

5. 安装插件和创建管理员用户

解锁 Jenkins 后:

  1. 系统会提示你安装推荐的插件。你可以选择安装推荐的插件,或手动选择特定的插件。
  2. 插件安装完成后,根据提示创建管理员用户。

6. 数据持久化和自定义配置

在前面创建的 Docker 容器中,使用的卷(jenkins_home)用于保持 Jenkins 的配置和任务数据持久化。这可以确保即使删除或停止容器,Jenkins 的数据仍然保留。

  • 你可以查看挂载的卷:
    docker volume inspect jenkins_home
    

如果想使用本地目录来保存数据,可以将 jenkins_home:/var/jenkins_home 替换为主机上的一个目录路径:

docker run -d -p 8080:8080 -p 50000:50000 --name jenkins \
  -v /path/to/your/jenkins_home:/var/jenkins_home jenkins/jenkins:lts

7. 也可以使用 Docker Compose 部署 Jenkins

如果你希望通过 Docker Compose 更方便地管理 Jenkins,可以创建一个 docker-compose.yml 文件:

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_home:/var/jenkins_home

volumes:
  jenkins_home:

然后使用 Docker Compose 启动 Jenkins:

docker-compose up -d

8. 常见问题

  1. Jenkins 端口无法访问
    解决办法:
  • 检查容器是否运行:
docker ps

如果没有运行,检查启动日志:

docker logs jenkins
  • 确保端口没有被占用
sudo lsof -i -P -n | grep LISTEN
  1. 无法获取Jenkins初始管理员密码
    解决办法:
  • 检查启动日志
docker logs jenkins
  • 如果没有日志,确保jenkins_home目录的权限正确,尝试修改主机目录权限:
sudo chown -R 1000:1000 /path/jenkins_home
  1. Jenkins 插件安装失败或速度很慢时
    解决方法:
    一般为网络问题,通过设置代理服务器解决:在Jenkins的"Manage Jenkins" -> “Manage Plugins” ->
    “Advanced” 中的“Update Site”将默认更新站点替换为国内镜像源:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  1. Jenkins意外停止
    Jenkins Docker容器启动后一直正常,但一段时间后自动停止 。

可能的原因:

  • 内存不足,Jenkins使用大量内存导致Docker容器崩溃。
  • 容器资源分配不足

解决办法

  • 查看容器日志
docker logs jenkins
  • 容器资源不足时,动态的增加分配给容器内存或CPU
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins \
  -v jenkins_home:/var/jenkins_home \
  --memory=2g jenkins/jenkins:lts
  1. Jenkins数据丢失或无法保存配置时
    有时重启Jenkins后,任务丢失。

可能原因:

  • Docker容器未正确挂载
  • 文件系统权限有问题

解决办法

  • 确保正确挂载Jenkins容器的Jenkins_home目录,保证数据持久化:
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins \
  -v /path/to/your/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
  • 检查挂载目录权限,确保容器有写入权限:
sudo chown -R 1000:1000 /pat/jenkins_home

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215209.html

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

相关文章

春日技术问答:Spring Boot课程答疑

3系统分析 3.1可行性分析 通过对本课程答疑系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本课程答疑系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

【2D/3D-Lidar-SLAM】 Cartographer详细解读

【2D/3D-Lidar-SLAM】 Cartographer详细解读 1. 摘要 2. Cartographer系统数据处理流程2.1. 数据获取&#xff08;Input Sensor Data&#xff09;2.2 姿态外推器&#xff08;PoseExtrapolator&#xff09;2.3 局部建图&#xff08;Local SLAM&#xff09; 3. 关键模块实现 3.1 …

5、springboot-基础入门

1、系统要求 Java 8 & 兼容java14 .Maven 3.3idea 2019.1.2 1.1、maven设置 修改maven的settings.xml文件中的镜像&#xff0c;如下 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyu…

vue3 在store的index.js

导入vuex&#xff0c;在store的index.js创建store对象 在main.js挂载store import store from ./storenew Vue ({/* 将store对象实例挂载到vue实例中 所有组件就可以直接从store中获取全局数据了*/ store, render: h > h(App) }).$mount(#app) 在store中的index.js进行声明…

【IPv6】IPv6 NAT66介绍

参考链接 IPv6-to-IPv6 Network Address Translation (NAT66) (ietf.org)https://datatracker.ietf.org/doc/id/draft-mrw-nat66-00.html IPv6 NAT66 NAT66&#xff0c;全称为Network Address Translation for IPv6 to IPv6&#xff0c;是一种用于IPv6网络的地址转换技术。在…

FPGA基于SRIO Auraro 三速以太网 IIC SPI等多协议的高速传输处理项目

高速传输处理项目 此项目涉及较多协议和接口&#xff0c;有较复杂的系统顶层框图设计。在涉及设备较多的应用场景中&#xff0c;需要涉及一款PCI-E板卡&#xff0c;将多个子系统的数据汇总上传到PC或服务器上。在此项目中有3路数据源&#xff0c;分别是:srio数据&#xff0c; …

数据结构与算法:动态规划的深度探讨

目录 12.1 动态规划的核心思想 12.2 经典动态规划问题 12.3 动态规划在图中的应用 12.4 高级动态规划技术 总结 数据结构与算法&#xff1a;动态规划的深度探讨 动态规划&#xff08;Dynamic Programming, DP&#xff09;是一种解决复杂问题的有效方法&#xff0c;特别适…

Nuxt3部署-Ubuntu系统(Node 服务 + pm2 + Nginx 反向代理)

Nuxt3部署-Ubuntu系统&#xff08;Node 服务 pm2 Nginx 反向代理&#xff09; 文章目录 Nuxt3部署-Ubuntu系统&#xff08;Node 服务 pm2 Nginx 反向代理&#xff09;一、安装 Nodejs 环境二、安装 Nginx三、安装 pm2四、本地项目打包1️⃣&#xff1a;打包2️⃣&#xff1…

【截流软件】采集短视频关键词笔记下的筛选评论

用python开发的dy采集工具【爬抖Y搜索评论软件】&#xff0c;可用于引流截流等。 支持2种模式的评论采集&#xff1a; 根据关键词采集评论&#xff0c;爬取思路&#xff1a;作品关键词->作品链接->评论根据作品链接采集评论&#xff0c;爬取思路&#xff1a;作品链接-&g…

aws(学习笔记第六课) AWS的虚拟私有,共有子网以及ACL,定义公网碉堡主机子网以及varnish反向代理

aws(学习笔记第六课) AWS的虚拟私有&#xff0c;共有子网以及ACL&#xff0c;定义公网碉堡主机子网以及varnish反向代理 学习内容&#xff1a; AWS的虚拟私有&#xff0c;共有子网以及ACL定义公网碉堡主机子网&#xff0c;私有子网和共有子网以及varnish反向代理 1. AWS的虚拟…

分享一个中国行政区划多边形2024版(含有十段线)

全国省市县三级行政区划分类 全国有省市县界限数据 十段线 有需要自取

[Linux系统编程] 线程同步(互斥锁,读写锁,死锁,条件变量,信号量)

一.线程同步概念 线程同步&#xff1a; 协同步调&#xff0c;对公共区域数据按序互斥访问。防止数据混乱&#xff0c;产生与时间有关的错误。 数据混乱的原因&#xff1a; 1.资源共享(独享资源则不会) 2.调度随机(意味着数据访问会出现竞争)—线程间竞争 3.线程间缺乏必要同步…

一篇闪击常用放大器电路(学习笔记)

文章目录 声明概念名词经典电路分析反向放大器同向放大器加法器减法器积分电路微分电路差分放大电路电流->电压转换电路电压->电流转换电路 虚短与虚断一、虚短二、虚断 一些碎碎念 声明 ​ 本文是主要基于以下两篇博客所做的笔记&#xff1a; 模电四&#xff1a;基本放…

图论day60|108.冗余连接(卡码网) 、109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】

图论day60|108.冗余连接&#xff08;卡码网&#xff09;、109.冗余连接II&#xff08;卡码网&#xff09;【并查集 摧毁信心的一题&#xff0c;胆小的走开&#xff01;】 108.冗余连接&#xff08;卡码网&#xff09;109.冗余连接II&#xff08;卡码网&#xff09;【并查集 摧毁…

Flythings学习(四)串口通信

文章目录 1 串口编程基本步骤1.1 打开串口1.2 配置串口 1.3 读串口1.4 发送串口1.5 关闭串口 2 综合使用3 如何在软件上保证串口稳定通信4 flythings中的串口通讯5 协议接收部分使用和修改方法6 通讯协议数据怎么和UI控件对接 1 串口编程基本步骤 串口通信有5个步骤 1.打开串口…

【干货】Ftrans跨网数据摆渡系统,如何实现网间数据安全高效流转?

随着企业数字化转型的逐步深入&#xff0c;企业投入了大量资源进行信息系统建设&#xff0c;信息化程度日益提升。在这一过程中&#xff0c;企业也越来越重视核心数据资产的保护&#xff0c;数据资产的安全防护成为企业面临的重大挑战。 一、网络隔离的必要性 绝大多数企业为…

步进电机定时器与编码器定时器关系

速度环PID比较计数器的增量公式&#xff1a; 位置环PID比较计数器的增量公式&#xff1a;

【 香格里拉酒店-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

gitLab配置ssh

1打开git命令行&#xff0c;创建秘钥 ssh-keygen -t rsa -b 4096 -C "用户名xxx.com" 2执行下面的命令查看公钥 cat ~/.ssh/id_rsa.pub 3#复制公钥到gitlab网址上ssh页面添加ssh的key&#xff08;公钥&#xff09; 4本地的git命令行中添加账户邮箱 git config -…