Jenkins容器中安装Python3
Jenkins容器中安装Python3
浅谈容器内安装 python3 方案
- 将 python3 挂载到容器工作目录上
- 直接复制 python3 目录到工作目录上
- jenkins 容器内安装 python3
但经过尝试后,方案1和2都以失败告终,各种乱七八糟的报错,原因是宿主机和容器中的系统有差异,会缺少些配置,因此不推荐方案1和2,接下来我们选择方案3。
查看容器内的系统
- 以root进入jenkins容器:
docker exec -it -u root 容器id|容器名 /bin/bash
cat /etc/issue
查看系统类型
1 | [root@iZ2ze0mc5577fn814ewhb8Z ~]# docker exec -it -u root cca651588eb3 /bin/bash |
这是我们看到容器中的系统是Debian(不是Ubuntu、也不是CentOS,虽然我们的宿主机是CentOS),因此在容器中不能使用yum
,但是可以使用apt-get
。注意:一定要是root进入容器,否则在执行apt-get
会告诉你没有权限。
容器中安装Python3
更新apt-get :
apt-get update
1
2
3
4
5
6root@cca651588eb3:/# apt-get update
Get:1 http://security.debian.org/debian-security stretch/updates InRelease [53.0 kB]
Get:2 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [656 kB]
Ign:3 http://deb.debian.org/debian stretch InRelease
Get:5 http://deb.debian.org/debian stretch-updates InRelease [93.6 kB]
……
安装依赖包
1
2
3
4
5
6
7
8
9apt-get install build-essential -y
apt-get install libncurses5-dev libncursesw5-dev libreadline6-dev -y
apt-get install libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev -y
apt-get install libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev -y
apt-get install libssl-dev openssl -y
在/var/jenkins_home目录下创建python3的安装目录
1
2root@cca651588eb3:/# cd /var/jenkins_home/
root@cca651588eb3:/var/jenkins_home# mkdir python3
下载python3.9.1版本的压缩包:wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
1
2
3
4
5
6
7
8
9
10
11
12root@cca651588eb3:/var/jenkins_home# mkdir python3
root@cca651588eb3:/var/jenkins_home# cd python3/
root@cca651588eb3:/var/jenkins_home/python3# wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
--2021-02-20 06:06:35-- https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
Resolving www.python.org (www.python.org)... 151.101.228.223, 2a04:4e42:1a::223
Connecting to www.python.org (www.python.org)|151.101.228.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 25372998 (24M) [application/octet-stream]
Saving to: ‘Python-3.9.1.tgz’
Python-3.9.1.tgz 47%[===============================> ] 11.59M 31.8KB/s in 12m 2s
……
解压:tar -xvf Python-3.9.1.tgz
1
root@cca651588eb3:/var/jenkins_home/python3# tar -xvf Python-3.9.1.tgz
进入解压后的目录,进行编译安装
- 配置:
./configure --prefix=/var/jenkins_home/python3 --with-ssl
报错缺少依赖包 - 编译安装:
make && make install
1
2
3
4
5
6
7
8
9root@cca651588eb3:/var/jenkins_home/python3# cd Python-3.9.1
root@cca651588eb3:/var/jenkins_home/python3/Python-3.9.1# ./configure --prefix=/var/jenkins_home/python3 --with-ssl
configure: WARNING: unrecognized options: --with-ssl
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
……
root@cca651588eb3:/var/jenkins_home/python3/Python-3.9.1# make && make install
gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Programs/python.o ./Programs/python.c
……- 配置:
添加python3软连接
1
2ln -s /var/jenkins_home/python3/bin/python3.9 /usr/bin/python3
ln -s /var/jenkins_home/python3/bin/pip3.9 /usr/bin/pip3
将安装Python3的容器打包成镜像
从容器中创建镜像
1
2
3
4
5
6
7
8
9[root@iZ2ze0mc5577fn814ewhb8Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cca651588eb3 jenkins/jenkins:lts "/sbin/tini -- /usr/…" 4 hours ago Up 4 hours 50000/tcp, 0.0.0.0:8082->8080/tcp jenkins
[root@iZ2ze0mc5577fn814ewhb8Z ~]# docker commit -a "lvjing" -m "Jenkins install python3" cca651588eb3 jenkins/python3:v1
sha256:6e361084a78882f6409358b98dec4617a744130d77ad0e05610c4243e7f74ced
[root@iZ2ze0mc5577fn814ewhb8Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/python3 v1 6e361084a788 10 seconds ago 929MB
jenkins/jenkins lts e5599f396096 5 weeks ago 717MB
打包镜像
1
[root@iZ2ze0mc5577fn814ewhb8Z ~]# docker save -o jenkins_python3.tar jenkins/python3:v1
打包得到的镜像,可以上传远端,也可以复制到别处,load镜像即可使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jing's Blog!