我是用win本地docker先将 oracle11g镜像下载好 然后导出上传到 宝塔面板上面的
详细下令:
下载镜像:大概6.8个G左右
- docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
复制代码 然后导出镜像:
- docker save -o D:\www\oracle11g.tar registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
复制代码 等导出完成后 再将该文件上传到 宝塔服务器某个路径地点
上传成功以后 使用SSH下令 将本地镜像导入到 docker里面
- docker load -i /data/docker/oracle11g/oracle_11g_image.tar
复制代码 面板上面也有导入本地镜像功能,但是我使用的时候导入失败了..
导入成功以后 使用 docker images 下令查看本地镜像列表

下一步 使用下令将容器启动:
- docker run \
- --privileged \
- -d \
- --restart=always \
- -v /data/oracle:/data/oracle \
- -p 1521:1521 \
- --name oracle11g \
- -e ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 \
- -e ORACLE_SID=helowin \
- -e PATH=/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
- registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
- 注意: 确保宿主机上面的 /data/oracle 这个目录存在
- 1. docker run 作用:这是启动一个新的 Docker 容器的命令。
- 2. --privileged 作用:授予容器几乎所有的主机权限。这允许容器内的进程执行通常需要超级用户权限的操
- 作,如加载内核模块、更改网络配置等。 注意事项:虽然有时是必要的,但应谨慎使用此选项,因为它
- 可能会带来安全风险。
- 3. -d 作用:以分离模式(后台)运行容器。这意味着容器会在后台运行,而不会占用当前终端。
- 等效选项:--detach
- 4. --restart=always 作用:设置容器的重启策略为始终重启。无论容器因什么原因停止(包括手动停止),
- Docker 都会尝试重新启动它。
- 其他选项:
- no:不自动重启容器。
- on-failure:仅在容器退出状态码表示失败时重启。
- unless-stopped:总是重启容器,除非容器被手动停止。
- 5. -v /data/oracle:/data/oracle 作用:将主机上的 /data/oracle 目录挂载到容器内
- 的 /data/oracle 目录。这样可以实现数据持久化,即使容器停止或删除,数据仍然保留在主机上。
- 等效选项:--volume
- 格式:host_path:container_path[:options]
- 6. -p 1521:1521 作用:将主机的 1521 端口映射到容器的 1521 端口。这使得你可以通过主机的 IP 地
- 址和端口 1521 访问容器内的 Oracle 数据库服务。
- 等效选项:--publish
- 格式:host_port:container_port
- 7. --name oracle11g 作用:为容器指定一个名称 oracle11g。这使得你可以通过这个名称而不是容器 ID
- 来引用容器。
- 等效选项:无
- 8. registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 作用:指定要使用的镜像。这里是阿里
- 云容器镜像服务中的 helowin/oracle_11g 镜像。
- 格式:repository/image_name:tag(如果省略标签,默认使用 latest)
- 总结:
- 这条命令的作用是启动一个名为 oracle11g 的 Docker 容器,使用来自阿里云的 helowin/oracle_11g 镜像
复制代码
完事儿 下一步 直接进入到 oracle容器里面 这一步很关键, 之前看别的文章是 docker exec -it oracle11g bash这样进入的,会有一些题目 下面直接使用 root来进入 权限大一点
- docker exec -it -u root oracle11g bash
复制代码 修改环境变量: (不可以省略 也创建了吧)
vi /etc/profile
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin PATH
保存后使设置文件生效:
source /etc/profile
设置权限:
- # 进入容器内部
- docker exec -it -u root oracle11g bash
- # 检查现有用户和组
- id oracle
- 输出-> uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba),502(oper)
- oracle 用户的 UID 是 500。
- dba 组的 GID 是 501。
- # 在主机上执行
- chown -R 500:501 /data/oracle
- chmod -R 750 /data/oracle
- 或者,如果您更喜欢使用用户名和组名:
- # 在主机上执行
- chown -R oracle:dba /data/oracle
- chmod -R 750 /data/oracle
- 确保更改已正确应用:
- ls -l /data/oracle
- 您应该看到类似以下的输出:
- total 8
- drwxr-x--- 2 oracle dba 4096 Dec 21 09:36 archivelog
- drwxr-x--- 3 oracle dba 4096 Dec 23 14:12 data
复制代码 注意:为了以防万一 导致挂载不成功 我是在 宿主机服务器, 以及容器里面 以及容器里面的 su oracle用户上 都设置了一遍 chown -R 500:501 /data/oracle
chmod -R 750 /data/oracle
|