docker挂载文件

本文详细介绍了如何在Centos7上安装docker并更改默认存储位置,以及在docker中安装Oracle数据库后的操作,包括挂载目录、导入dmp文件、创建表空间和启动监听器的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装docker
安装docker时一定要注意安装的那个盘符多大.什么几十G也是太小了,你要想下,到时再docker安装Oracle mysql等容器,这样就会撑大,而且还要往里面导入数据,这样的话就不够,到时你导入dmp文件到Oracle中,创建空间就报各种错,

修改docker位置:
我的系统是Centos7,解决的具体步骤如下:

1、停止docker服务。

systemctl stop docker; //每个liunx版本的命令不一样。

2、创建新的docker目录,执行命令df -h,找一个大的磁盘。我的是放在/home目录下面,我的/home目录大小有900G。 我在 /home目录下面建了 /home/docker/lib目录,执行的命令是:mkdir -p /home/docker/lib

3、迁移/var/lib/docker目录下面的文件到 /home/docker/lib下面

cp -R /var/lib/docker/* /home/docker/lib/

注意:如果文件内容很多的话,为了确保成功最好是一个文件一个文件的拷贝。如果在拷贝过程中报“设备上没有空间”的错误,就使用mv剪切。

4、修改docker配置(/etc/systemd/system/docker.service.d/devicemapper.conf),在文件末添加 --graph=/home/docker/lib

devicemapper.conf文件的内容如下:

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd --insecure-registry=私服地址 --graph=/home/docker/lib

注意:如果/etc/systemd/system/docker.service.d/devicemapper.conf,这个路径找不到的话,就新建,新建之后加入内容,没有私服地址的话就可以去掉”–insecure-registry=私服地址”。

5、重载配置,重启docker

systemctl daemon-reload;

systemctl restart docker;

systemctl enable docker;

6、启动成功后,确定容器没问题后删除/var/lib/docker/目录中的文件,然后就OK了

在docker下安装了Oracle后,要进入Oracle的命令界面需要先前执行下面这条命令:

docker exec -it oracle bash
然后进入Oracle:
sqlplus system/oracle

得到的画面是:
这里写图片描述

而后装了Oracle后把dmp文件传入到Oracle数据库;
这时需要注意,需要执行挂在文件命令
Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定
譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
(注意:最好是在启动Oracle时同时创建挂载文件)

# docker run -v /testdocker:/soft --name oracle -d -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g

--name 就是别名  oracle    -d 后台执行   -p 暴露端口    这个必须要 不然外界访问不到 1521端口  -e 就是设置 运行环境  设置为 允许远程访问,, 后面就是容器名称 默认端口  latest:默认版本

这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。
在没有这个test的目录时会自动创建

导入dmp数据时要创建表空间
CGWS:为表空间名
‘/u01/app/oracle/oradata/XE/cgwss.dbf’ :表空间路径 (查找表空间路径:select * from dba_data_files;)

CREATE TABLESPACE CGWS LOGGING DATAFILE '/u01/app/oracle/oradata/XE/cgwss.dbf' SIZE 1G AUTOEXTEND ON NEXT 35M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;

// 创建用户连接表空间
CREATE USER CGW IDENTIFIED BY 123456 ACCOUNT UNLOCK DEFAULT TABLESPACE CGWS;

//赋予用户权限
GRANT CONNECT,RESOURCE TO CGW;
GRANT DBA TO CGW;

导入imp文件.可以根据导入那个用户,在执行 docker exec -it oracle bash
界面后导入文件
命令:

imp SYSTEM/123456 file=/soft/cgwsp2018-06-15.dmp  tablespaces=CGWS ignore=y  full=y 

linux中启动oracle主要分两步:一个是启动监听器,一个是启动实例。

工具/原料
linux 安装 oracle数据库
SecureCRT 任意ssh连接工具都可以

方法/步骤
一、secureCRT连接到数据库所在的linux机器,切换到oracle用户模式下
[root@nstlbeta ~]# su - oracle

二、然后用sqlplus登录到数据库,关闭数据库
[oracle@nstlbeta bin]$ sqlplus /nolog //登录sqlplus
SQL> connect /as sysdba //连接oracle
SQL> startup //起动数据库
SQL> exit //退出sqlplus ,起动监听

三、起动监听
[oracle@nstlbeta bin]$ cd ORACLEHOME/bin//进入oracle安装目录[oracle@nstlbetabin]ORACLE_HOME/bin //进入oracle安装目录 [oracle@nstlbeta bin]ORACLEHOME/bin//oracle[oracle@nstlbetabin] lsnrctl start //起动监听

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
### Docker 挂载文件配置教程 Docker 提供了强大的挂载功能,允许将宿主机的文件或目录映射到容器内部。以下是关于如何在 Docker挂载文件的详细说明。 #### 1. 数据卷挂载 数据卷是一种用于持久化存储的方式,可以将宿主机上的目录或文件挂载到容器内。创建容器时,可以通过 `-v` 参数实现挂载[^4]。 ```bash docker run -d \ --name mysql \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=root \ -v /root/data/mysql/data:/var/lib/mysql \ -v /root/data/mysql/init:/docker-entrypoint-initdb.d \ -v /root/data/mysql/conf:/etc/mysql/conf.d \ mysql ``` 上述命令中,`-v` 参数指定了宿主机路径与容器路径的映射关系。例如,`/root/data/mysql/data:/var/lib/mysql` 将宿主机的 `/root/data/mysql/data` 目录挂载到容器内的 `/var/lib/mysql` 目录。 #### 2. 配置文件挂载 挂载配置文件是常见的需求之一,尤其是在运行服务(如 Redis、Nginx)时需要自定义配置的情况下。以下是一个 Redis 的配置文件挂载示例: ```bash docker run -d \ --name redis \ -p 6379:6379 \ -v /D/docker/redis/data:/data/ \ -v /D/docker/redis/conf/redis_6379.conf:/etc/redis/redis_6379.conf \ redis:版本号 redis-server /etc/redis/redis_6379.conf --appendonly yes ``` 在此命令中,`-v /D/docker/redis/conf/redis_6379.conf:/etc/redis/redis_6379.conf` 将宿主机的 `redis_6379.conf` 文件挂载到容器内的 `/etc/redis/redis_6379.conf` 路径[^3]。 #### 3. 动态数据卷挂载 如果挂载的目标是动态生成的数据卷,则无需指定宿主机路径。Docker 会自动创建一个数据卷并将其挂载到容器内。例如: ```bash docker run -d \ --name app \ -v myvolume:/app/data \ myimage ``` 上述命令中,`myvolume` 是一个动态数据卷名称。如果该数据卷不存在,Docker 会在运行时自动创建它。 #### 4. 文件权限与所有者设置 挂载文件或目录时,需要注意权限问题。默认情况下,宿主机上的文件权限会被直接映射到容器内。如果遇到权限不足的问题,可以在启动容器前调整宿主机文件的所有者和权限。例如: ```bash chown -R 1001:1001 /root/data/mysql/data chmod -R 755 /root/data/mysql/data ``` 上述命令将宿主机目录的所有者设置为 UID 和 GID 均为 `1001` 的用户,并赋予适当的权限。 #### 5. 持久化与数据共享 通过挂载宿主机目录,可以实现数据的持久化存储和跨容器共享。例如,多个容器可以挂载同一个宿主机目录以共享数据。这种机制非常适合开发环境中的代码同步或生产环境中的日志收集[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值