docker 容器内安装JDK

      本次安装的JDK版本为1.8.0, 同样启动容器,挂载本地目录,将安装放置在本地目录内,启动容器后,进入容器内挂载目录,安装包拷贝到容器内部目录 /mnt下。

一、准备工作

启动容器,挂载目录

 docker run -tdi --rm --dns 8.8.8.8 --dns 8.8.4.4 --name 容器名 -v 主机安装包目录:/容器内部目录 镜像仓库:镜像标签

进入容器,拷贝安装包

[root@localhost installment]# docker exec -ti 容器名 /bin/bash
root@1bff1fd0d076:/# cd 容器内挂载目录
root@1bff1fd0d076:/容器内目录# ls -a
.  ..  configment  devlopment  installment
root@1bff1fd0d076:/../installment# ls -a
.  ..  jdk-8u191-linux-x64.rpm  jdk-8u191-linux-x64.tar.gz  tomcat-6.0.33.tar.gz

三个文件夹,配置、开发、安装, 这是在宿主机器上的三个文件夹(不用创建该三个目录,这是我电脑上的目录,也可直接挂载目录到installment)。安装包内容在 installment, 

拷贝文件到 容器内其他目录(这一步可不操作,纯属个人习惯,我不习惯在挂载目录内安装)

root@1bff1fd0d076:/home/...# cp -r ./installment /mnt/openjdk
root@1bff1fd0d076:/home/...# cd /mnt/openjdk
root@1bff1fd0d076:/mnt/openjdk# ls -a
.  ..  installment
root@1bff1fd0d076:/mnt/openjdk# cd installment && ls -a
.  ..  jdk-8u191-linux-x64.rpm  jdk-8u191-linux-x64.tar.gz  tomcat-6.0.33.tar.gz
root@1bff1fd0d076:/mnt/openjdk/installment# 

二、安装

  这里使用tar.gz 安装包。也可以使用rpm包。使用rpm安装到具体目录使用如下指令

rpm -ivh --prefix=/java  xx.rpm

新建目录 /usr/local/java 并解压到该目录

mkdir /usr/local/java &&  tar -zvxf jdk-8u191-linux-x64.tar.gz -C /usr/local/java

进入目录可看到解压结果

root@1bff1fd0d076:/mnt/openjdk/installment# cd /usr/local/java && ls -a                                                      
.  ..  jdk1.8.0_191
root@1bff1fd0d076:/usr/local/java# cd jdk1.8.0_191  && ls -a
.   COPYRIGHT  README.html                         THIRDPARTYLICENSEREADME.txt  include         jre  man      src.zip
..  LICENSE    THIRDPARTYLICENSEREADME-JAVAFX.txt  bin                          javafx-src.zip  lib  release
root@1bff1fd0d076:/usr/local/java/jdk1.8.0_191# 

三、设置环境变量

设置环境变量文件的,可具体参数 博文:docker环境变量设置。 这里修改 文件  /etc/profile, 在该文件末尾添加如下内容

export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export JRE_HOME=/usr/local/java/jdk1.8.0_191/jre
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export $JAVA_HOME/bin:$PATH

调用 source /etc/profile 使生效,然后检查

root@1bff1fd0d076:/usr/local/java/jdk1.8.0_191# source /etc/profile
root@1bff1fd0d076:/usr/local/java/jdk1.8.0_191# echo $PATH
/usr/local/java/jdk1.8.0_191/bin:/usr/local/mysql/bin:/usr/local/mysql/bin:/usr/local/mysql/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@1bff1fd0d076:/usr/local/java/jdk1.8.0_191# 

成功,

如果需要保存该容器为镜像,还需要调用 docker commit 提交容器为镜像,步骤和在 docker容器内安装mysql 一直

 

<think>好的,我现在需要帮助用户在Jenkins的Docker容器中配置Maven和JDK1.8环境。首先,我得理清楚用户的问题和现有的引用内容。用户已经提供了一些引用,其中提到了如何运行JDK1.8的容器安装Jenkins的步骤,以及在Jenkins中配置环境的部分说明。 首先,用户想在一个Jenkins的Docker容器里同时安装Maven和JDK1.8。根据引用[3],他们之前是通过运行一个Jenkins镜像,并且挂载了多个卷来启动容器的。不过,默认的Jenkins镜像可能不包含JDK1.8和Maven,所以需要手动安装或者定制镜像。 引用[1]中提到使用了一个primetoninc/jdk:1.8的镜像来运行JDK1.8。可能用户希望在这个Jenkins容器安装同样的JDK版本。同时,引用[2]指出在Jenkins的环境配置中,JDK和Git可以不用设置,因为容器启动时已经用了JDK1.8。但这里可能存在误解,因为Jenkins容器本身如果没有预装JDK的话,可能需要手动安装。 接下来,我需要考虑如何将JDK1.8和Maven安装到Jenkins容器中。通常有两种方法:一种是进入正在运行的容器,手动安装然后保存为新的镜像;另一种是创建一个Dockerfile,基于Jenkins官方镜像,添加JDK和Maven的安装步骤,然后构建自定义镜像。 根据用户提供的引用[3],他们之前运行Jenkins容器挂载了宿主机的docker.sock和docker二进制文件,可能是为了在容器内执行docker命令。这种情况下,如果用户希望容器内部也具备JDK1.8和Maven,可能需要修改Dockerfile或者在启动容器安装。 不过,用户现在可能是在现有的容器安装,而不是重新构建镜像。这时候,可以通过进入容器内部,使用apt-get或其他包管理工具安装JDK和Maven。但需要注意,Jenkins官方镜像基于什么Linux发行版。通常,Jenkins官方镜像基于Debian,所以应该使用apt-get命令。 例如,进入容器后,更新包列表,安装OpenJDK8和Maven。但需要注意,OpenJDK8在Debian的仓库中可能需要添加特定的源,或者直接下载Oracle JDK1.8的二进制包并配置环境变量。同样,Maven也需要下载并解压,设置PATH。 另外,用户可能希望将这些安装步骤固化到Dockerfile中,以便后续直接使用自定义镜像。这样每次启动容器时就不需要重新安装了。这可能是更高效的解决方案。 接下来,我需要考虑如何编写Dockerfile。例如,以jenkins/jenkins:lts为基础镜像,然后安装JDK1.8和Maven。比如: FROM jenkins/jenkins:lts USER root RUN apt-get update && \ apt-get install -y openjdk-8-jdk && \ apt-get install -y maven USER jenkins 不过,这样可能会存在问题,因为不同版本的Debian可能默认的OpenJDK版本不同。如果无法通过apt安装JDK1.8,可能需要手动下载并安装。例如,从Oracle官网下载JDK1.8的tar.gz文件,解压到指定目录,并设置JAVA_HOME和PATH环境变量。 同样,对于Maven,如果系统仓库中的版本不符合要求,可以手动下载特定版本,解压并配置环境变量。 此外,用户之前提到在引用[3]中挂载了/data/jenkins/jenkins_home作为卷,这可能包含Jenkins的配置和数据。如果在容器安装软件,需要注意这些安装是否会被持久化。如果用户使用自定义镜像,每次重新创建容器时,软件会被预装,而数据卷可以保持配置。 所以,可能的步骤包括: 1. 创建自定义Dockerfile,安装JDK1.8和Maven。 2. 构建镜像并运行容器挂载必要的卷。 3. 或者在现有容器中手动安装,但需要保存为新的镜像。 另外,用户可能需要配置Jenkins系统设置中的JDK和Maven路径。例如,在Jenkins的“全局工具配置”中,指定JDK和Maven的安装路径。即使容器安装了这些工具,Jenkins可能还需要知道它们的路径才能使用。 根据引用[2],用户提到在Jenkins的环境配置中,JDK不用设置,因为启动容器时已经用了JDK1.8。这可能是因为容器本身已经配置了JAVA_HOME环境变量,或者Jenkins默认使用宿主机的环境。但如果在容器安装了多个JDK版本,可能需要明确指定。 总结,解决方案有两种主要方法: 方法一:在Dockerfile中构建自定义镜像,包含JDK1.8和Maven,然后运行容器。 方法二:进入现有的Jenkins容器,手动安装JDK1.8和Maven,并配置环境变量,然后提交容器为新的镜像。 对于方法一,更推荐,因为可重复且易于维护。例如,Dockerfile可能如下: FROM jenkins/jenkins:lts USER root # 安装JDK 1.8 RUN apt-get update && \ apt-get install -y wget && \ wget [Oracle JDK 1.8的下载链接] && \ tar -xzf jdk-8uXXX-linux-x64.tar.gz -C /opt && \ rm jdk-8uXXX-linux-x64.tar.gz ENV JAVA_HOME /opt/jdk1.8.0_XXX ENV PATH $JAVA_HOME/bin:$PATH # 安装Maven RUN wget [Maven下载链接] && \ tar -xzf apache-maven-3.6.3-bin.tar.gz -C /opt && \ rm apache-maven-3.6.3-bin.tar.gz ENV MAVEN_HOME /opt/apache-maven-3.6.3 ENV PATH $MAVEN_HOME/bin:$PATH USER jenkins 需要注意,这里需要处理Oracle JDK的下载许可问题,因为直接从Oracle下载可能需要登录账户。因此,可能更建议使用OpenJDK,例如: RUN apt-get install -y openjdk-8-jdk 然后设置JAVA_HOME为/usr/lib/jvm/java-8-openjdk-amd64/ 对于Maven,同样可以使用apt安装,但版本可能较旧,或者手动下载指定版本。 安装完成后,构建镜像: docker build -t jenkins-jdk8-maven . 然后运行容器,使用类似引用[3]中的命令,挂载必要的卷。 对于方法二,如果用户不想重建镜像,可以进入运行的容器docker exec -it jenkins /bin/bash 然后手动安装: 更新包列表,安装OpenJDK8: sudo apt-get update sudo apt-get install openjdk-8-jdk 安装Maven: sudo apt-get install maven 或者手动下载Maven包并解压。 但需要注意,容器内的用户权限,可能需要使用root用户(在进入容器后切换为root,或者使用USER root在Dockerfile中)。 然后,检查是否安装成功: java -version mvn -v 之后,在Jenkins的系统配置中,可能需要指定JDK和Maven的路径,尤其是如果安装路径不在默认环境变量中。例如,在Jenkins的“全局工具配置”中,添加JDK和Maven,指定JAVA_HOME和MAVEN_HOME的路径。 根据引用[2],用户提到JDK不用设置,因为启动容器时已经用了JDK1.8。这可能意味着在启动Jenkins容器时,已经通过基础镜像或挂载的环境变量配置了JDK,所以Jenkins会自动检测。但如果是手动安装的,可能需要配置。 最后,测试Jenkins任务是否可以使用JDK1.8和Maven。 可能的问题包括:容器中缺少必要的依赖,权限问题,或者环境变量未正确配置。需要确保安装过程中没有错误,并且路径正确。 综上,步骤大致为: 1. 创建自定义Dockerfile安装JDK8和Maven。 2. 构建并运行镜像。 3. 在Jenkins中配置工具路径(如果需要)。</think>以下是在 Jenkins 的 Docker 容器中配置 Maven 和 JDK 1.8 的完整步骤: ### 方法一:通过 Dockerfile 构建自定义镜像 1. **创建 Dockerfile** ```dockerfile FROM jenkins/jenkins:lts USER root # 安装 OpenJDK 8 RUN apt-get update && \ apt-get install -y openjdk-8-jdk && \ rm -rf /var/lib/apt/lists/* # 设置 JDK 环境变量 ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ENV PATH $JAVA_HOME/bin:$PATH # 安装 Maven(手动下载指定版本) RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz -P /tmp && \ tar -xzf /tmp/apache-maven-3.8.6-bin.tar.gz -C /opt && \ mv /opt/apache-maven-3.8.6 /opt/maven && \ rm /tmp/apache-maven-3.8.6-bin.tar.gz # 设置 Maven 环境变量 ENV MAVEN_HOME /opt/maven ENV PATH $MAVEN_HOME/bin:$PATH USER jenkins ``` 2. **构建镜像并运行容器** ```bash docker build -t jenkins-jdk8-maven . docker run -d --name jenkins \ -p 8080:8080 \ -v /data/jenkins/jenkins_home:/var/jenkins_home \ -v /etc/localtime:/etc/localtime \ -v /run/docker.sock:/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ jenkins-jdk8-maven ``` ### 方法二:手动进入容器安装(适用于临时调试) 1. **进入正在运行的 Jenkins 容器** ```bash docker exec -it jenkins /bin/bash ``` 2. **在容器内执行安装命令** ```bash # 切换 root 用户 su root # 安装 OpenJDK 8 apt-get update && apt-get install -y openjdk-8-jdk # 手动安装 Maven wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz tar -xzf apache-maven-3.8.6-bin.tar.gz -C /opt mv /opt/apache-maven-3.8.6 /opt/maven # 配置环境变量 echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> /etc/profile echo 'export MAVEN_HOME=/opt/maven' >> /etc/profile echo 'export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile ``` 3. **验证安装** ```bash java -version # 应显示 openjdk 1.8 mvn -v # 应显示 Maven 3.8.6 ``` ### Jenkins 全局工具配置 1. 登录 Jenkins 控制台,进入 `Manage Jenkins > Global Tool Configuration` 2. **JDK 配置** - 若使用 Dockerfile 或手动安装,Jenkins 会自动检测 JDK,无需额外配置[^2] 3. **Maven 配置** - 名称: `Maven-3.8.6` - MAVEN_HOME: `/opt/maven` ### 注意事项 1. **数据持久化**:通过 `-v /data/jenkins/jenkins_home:/var/jenkins_home` 确保配置不丢失[^3] 2. **权限问题**:挂载 Docker 套接字时需确保容器内用户有执行权限[^3] 3. **镜像优化**:建议使用方法一构建自定义镜像,避免重复安装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值