Docker Alpine安装oracle客户端

2023-11-09

Docker Alpine安装oracle客户端

  1. 进入docker容器
docker run -it --name=容器名 镜像名:latest /bin/sh       由镜像创建容器并进入(只有镜像无容器)
或
docker exec -it 容器名 /bin/sh                          直接进入运行中的容器
  1. 安装必要包
apk add libaio, libnsl, unzip
  1. 下载解压oracle basic包

需要对应服务器版本, 命令select * from v$version;

各版本下载地址(32位): https://www.oracle.com/database/technologies/instant-client/linux-x86-32-downloads.html

各版本下载地址(64位): https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

# 下载basic免安装zip包, 需要登录验证, 所以下载链接不能复用, 要在上面链接中找对应版本下载

# 弄个单独目录存
cd /usr/local
mkdir oracle
cd oracle

# wget -c 支持断点续传
wget -c https://download.oracle.com/otn/linux/instantclient/11204/instantclient-basic-linux.x64-11.2.0.4.0.zip
?AuthParam=1644827926_6725c450378f19288cb3dc5d040b8a18

# unzip 解压
unzip instantclient-basic-linux.x64-11.2.0.4.0.zip?AuthParam\=1644827926_6725c450378f19288cb3dc5d040b8a18

# 整理下文件
mv ./instantclient_11_2/* ./
rmdir instantclient_11_2

unzip End-of-central-directory signature not found: 多半是下载的文件有问题, 重新下载就可以

  1. 添加环境变量
# 通过查看 /etc/profile 可以看到会加载 /etc/profile.d/目录下的 .sh结尾的文件

# 弄个单独的环境变量配置文件
vi /etc/profile.d/oracle.sh
 
export ORACLE_HOME=/usr/local/oracle
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH

# 测试下加上没有
source /etc/profile
echo $PATH

# 退出容器
exit

注: 这里会有很多奇怪的报错, 以下为作者碰到的

报错1. Error loading shared library /usr/local/oracle/lib/libclntsh.so: No such file or directory

(一开始是打算用软链接的, 但是没用, 直接复制就可以了, 不知道为什么)

mkdir /usr/local/oracle/lib
cp /usr/local/oracle/libclntsh.so.11.1 /usr/local/oracle/lib/libclntsh.so

报错2.
Error loading shared library libnsl.so.1: No such file or directory (needed by /usr/local/oracle/lib/libclntsh.so
(libnsl.so.1 或 libnsl.so) 建对应软链接

ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so.1
ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so
  1. 提交镜像
docker commit -a 'laowang' 容器名 镜像名:1.0.0
  1. 换docker启动用的镜像版本号

注: 最后会发现环境变量没有加载, 原因未知

绕路解决方法:

  • 通过DockerFile直接运行容器的项目: 修改Dockerfile文件, 例: CMD source /etc/profile && gunicorn ....
  • 通过DockerCompose启动的项目: 修改docker-compose.yml文件 例: command: /bin/sh -c "source /etc/profile && gunicorn ...."

python 直连测试代码

import cx_Oracle
conn = cx_Oracle.connect(“user/passwd@host/instance”)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker Alpine安装oracle客户端 的相关文章

随机推荐

  • 使用高德地图(点标记)完成vue2项目

    目录 前言 官网中的代码 项目中的代码 效果图 代码 配置 前言 由于项目 中有要使用高德地图的需求 我就 傲娇的说 我会使用百度地图 可以改为百度地图不 最终的结果就是要用高德地图 后端小哥哥还特别好的安慰我说 高德地图的用法跟百度地图的
  • 上采样和下采样

    分辨率 是屏幕图像的精密度 是指显示器所能显示的像素的多少 由于屏幕上的点 线和面都是由像素组成的 显示器可显示的像素越多 画面就越精细 同样的屏幕区域内能显示的信息也越多 可以把整个图像想象成是一个大型的棋盘 而分辨率的表示方式就是所有经
  • c#笔记2018-12-27

    using System 2018 12 27 c 学习笔记 1 c 判断if else if switch 2 循环while for do while 3 循环实例 for循环99乘法表 while 循环99乘法表 do while 循
  • 关于contenteditable = true中光标异常判定的解决方法

  • Eclipse和PyDev搭建完美Python开发环境(Windows篇)

    十一长假在家闲着没事儿 准备花点时间学习一下Python 今儿花了一个下午搭建Python的开发环境 不禁感叹 开源的东西就是麻烦啊 唉 可怜我们这些被微软宠坏了的开发人员 为什么不用别的IDE呢 IDLE是小打小闹用的 那个WingIDE
  • 如何选用GPU云服务器?

    1 相关知识了解 1 1 了解厂家 1 1 1 面向个人的平台 名称 特点 极链AI云 微信绑定送100 学生200 1024Lab云 便宜 国外 DBC支付 不知道是啥 不考虑 矩池云GPU VNC远程访问图形化桌面 操作简单 gpu种类
  • ls命令用法总结

    ls 命令可以说是linux下最常用的命令之一 a 列出目录下的所有文件 包括以 开头的隐含文件 b 把文件名中不可输出的字符用反斜杠加字符编号 就象在C语言里一样 的形式列出 c 输出文件的 i 节点的修改时间 并以此排序 d 将目录象文
  • idea的target文件夹不见了

    1 第一种方法 在2位置打上 2 第二种方法 在5里面寻找target 并删掉 3 总结 目前遇到的就这两种情况 第二种情况5中用 分开的每一个都是忽略的文件或文件夹 像 git文件 idea文件夹都可以在这里配置忽略 我知道的作用是在pr
  • Unity Xbox360 Input

    1 资料收集 2 Unity中增加键值注册 3 A键值 4 B键值 5 X键值 6 Y键值 7 LeftBumper 键值
  • 思考卷积神经网络(CNN)中各种意义

    只是知道CNN是不够 我们需要对其进行解剖 继而分析不同部件存在的意义 CNN的目的 简单来说 CNN的目的是以一定的模型对事物进行特征提取 而后根据特征对该事物进行分类 识别 预测或决策等 在这个过程里 最重要的步骤在于特征提取 即如何提
  • AltiumDesigner 绘制PCB常见问题

    1 普通过孔16mil 24mil 2 PCB双层板看到上面有大量的过孔 很多都没有用到的 这些过孔有什么用啊 答 通过大量过孔连接顶层和底层的铺铜 也就是将顶层和底层的 地 良好的连接 为接地点提供更多回路 以提高整个电路板的抗干扰能力
  • Rpm相关操作

    安装rpm包 rpm ivh your package rpm 安装过程中可能出现下面的警告或者提示 conflict with 可能是要安装的包里有一些文件可能会覆盖现有的文件 缺省时这样的情况下是无法正确安装的 强制安装即可 rpm f
  • 《数据结构与算法》实验:排序算法实验比较——选择排序 & 堆排序

    数据结构与算法 实验和课程Github资源 数据结构与算法 实验 线性结构及其应用 算术表达式求值 数据结构与算法 实验 树型结构的建立与遍历 数据结构与算法 实验 图结构的建立与搜索 数据结构与算法 实验 查找结构的实验比较 二叉查找树B
  • 同步通讯和异步通讯(简单理解)

    同步通信和异步通信 简单理解 注 本篇文章只是告诉你什么是同步通信 什么是异步通信 即使没有计算机基础的同学也适合阅读 同时也能帮助计算机专业同学更好理解这个知识点 但是如果想深入学习 还需自己翻阅资料 一 电脑完成一个读命令需要的步骤 主
  • ​Qt for Python 入门¶​

    本页重点介绍如何从源代码构建Qt for Python 如果你只想安装PySide2 与你需要运行 pip pip install pyside2 有关更多详细信息 请参阅我们的快速入门指南 此外 您可以 查看与项目相关的常见问题解答 一般
  • 【猿人学WEB题目专解】猿人学第17题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • C#socket编程——TCP协议创建服务器端和客户端并进行通信

    我们做网络通信的时候需要有通信协议 在进行socket编程的时候有两种通信协议TCP UDP 这次我们就用简单的方式在一台电脑建立TCP协议的服务器端和客户端并使之进行通信 服务器端和客户端进行连接 第一步就行在服务器端创建一个socket
  • 白名单限制

    白名单是设置可以通过的用户 其他用户不可以通过 黑名单是设置不可以通过的用户 其他用户可以通过 常用的白名单限制 数据库使用白名单限制 rds数据库在阿里云设置能够访问的IP白名单 MySQL设置白名单 1 登录mysql mysql h
  • Vue 3-计算属性的getter,setter

  • Docker Alpine安装oracle客户端

    Docker Alpine安装oracle客户端 进入docker容器 docker run it name 容器名 镜像名 latest bin sh 由镜像创建容器并进入 只有镜像无容器 或 docker exec it 容器名 bin