docker夸服务器迁移

Docker跨服务器迁移

2018年03月06日 17:34:45

 

Docker的备份方式有export和save两种。

export是当前的状态,针对的是容器,docker save 是针对镜像images。

一、镜像的迁移—save

1.镜像保存

登陆到已经部署好镜像的服务器上面,执行以下命令进行导出

  1. [root@mytest2 local]# docker images

  2. REPOSITORY TAG IMAGE ID CREATED SIZE

  3. shiyu/centos tomcat-centos b61b207a5809 28 minutes ago 1.263 GB

  4. docker.io/centos latest 2d194b392dd1 7 hours ago 195.4 MB

  5. docker.io/centos 7.3.1611 66ee80d59a68 4 months ago 191.8 MB

  6. [root@mytest2 local]# docker save b61b >mytomcat.tar

2.将镜像导入

将刚才导出的镜像上传到你要导入的那台服务器上

  1. [root@mytest local]# scp  mytomcat.tar 192.168.0.4:/usr/local/

  2. root@192.168.0.4's password:

  3. mytomcat.tar                                                                                                100% 1228MB  49.1MB/s   00:25

 

 

执行以下命令镜像导入

  1. [root@mytest local]# ll mytomcat.tar

  2. -rw-r--r-- 1 root root 1287580160 Mar  6 16:36 mytomcat.tar

  3. [root@mytest local]# docker images

  4. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

  5. [root@mytest local]# docker load < mytomcat.tar

  6. b03095563b79: Loading layer [==================================================>]   204 MB/204 MB

  7. 1d88d689ca13: Loading layer [==================================================>] 3.584 kB/3.584 kB

  8. a997e4440673: Loading layer [==================================================>]  2.56 kB/2.56 kB

  9. 0a3b6c7be500: Loading layer [==================================================>] 309.5 MB/309.5 MB

  10. cee5bf38dfe0: Loading layer [==================================================>] 774.1 MB/774.1 MB

  11. Loaded image ID: sha256:b61b207a5809e56150df90e9c419f838c9a0988828773ef33aa2768e589c19c2kB/774.1 MB

  12. [root@mytest local]# docker images

  13. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

  14. <none>              <none>              b61b207a5809        About an hour ago   1.263 GB

  15. [root@mytest local]# docker tag b61b mytomcat:2.0

  16. [root@mytest local]# docker images

  17. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

  18. mytomcat            2.0                 b61b207a5809        About an hour ago   1.263 G


二、容器的迁移—export

1.导出容器


 
  1. [root@mytest2 local]# docker ps -a

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  3. 8578122af714 b61b "/bin/sh -c '/usr/loc" 56 minutes ago Up 56 minutes 0.0.0.0:8090->8088/tcp naughty_bartik

  4. [root@mytest2 local]# docker export 8578122af714 > mytomcat_export.tar

2.导入到新的服务器上

同样需要将刚才的导出的容器备份上传到目标服务器上,执行下面的命令


 
  1. [root@mytest local]# docker images

  2. REPOSITORY TAG IMAGE ID CREATED SIZE

  3. [root@mytest local]# cat mytomcat_export.tar |docker import - centos:tomcat

  4. sha256:b3d5c7409cf020ea3f1ce57865e8e476e878e347963b3da02cab23b1d7464ce2

  5. [root@mytest local]# docker images

  6. REPOSITORY TAG IMAGE ID CREATED SIZE

  7. centos tomcat b3d5c7409cf0 11 seconds ago 1.263 GB

注意:运行导入的镜像的时候必须带command,否则启动报如下错误


 
  1. [root@mytest ~]# docker run -d -p 8090:8088 b3d5

  2. /usr/bin/docker-current: Error response from daemon: No command specified.

  3. See '/usr/bin/docker-current run --help'.

<think>嗯,用户想迁移运行Oracle 11g的Docker容器到新服务器。首先,我得回忆一下Docker迁移的一般步骤。根据引用[2]提到的,可能需要用docker inspect查看容器参数,然后打包数据和配置。不过Oracle数据库比较特殊,数据持久化很重要,用户之前用了volumes挂载,这点要注意。 首先,检查原服务器的容器配置。用户之前的docker-compose.yml里挂载了两个目录到宿主机,分别是/data/oracle/oradata下的test_data和flash_recovery_area。所以在迁移时,这些数据目录必须完整地复制到新服务器,否则数据库数据会丢失。 然后,容器本身可能有一些运行时参数,比如端口映射是15211:1521。通过docker inspect可以获取这些信息,确保新服务器上的配置一致。不过用户已经用了docker-compose,可能直接迁移这个文件更方便。 接下来,数据迁移部分。用户之前提到用cp命令拷贝容器内目录到宿主机,但现在需要把宿主机的数据目录迁移到新服务器。可以使用rsync或者scp将/data/oracle/oradata整个传输过去。注意权限问题,Oracle在容器里可能有特定的用户权限,所以新服务器上的目录权限要设置正确。 然后是新服务器的环境准备。安装Dockerdocker-compose,版本要和原服务器一致,避免兼容问题。把docker-compose.yml复制过去,调整路径如果有必要,比如确保新服务器的/data目录存在,或者修改挂载路径到其他位置。 启动容器的时候,可能需要重新构建或者直接启动。因为镜像来自阿里云的registry,新服务器需要能够拉取这个镜像,或者提前导出镜像再导入到新服务器,以防拉取失败。 另外,Oracle的配置文件或者环境变量是否需要特殊处理?比如字符集、内存参数等,可能在docker-compose.yml里有设置,需要检查。如果容器有特定的启动参数,也要在新环境里保持一致。 测试阶段很重要,启动容器后,检查日志是否有错误,进入容器内部确认数据库是否正常,用sqlplus连接测试。如果有问题,可能需要查看Oracle的日志文件,比如alert log,排查原因。 最后,用户可能需要修改应用连接的数据库地址,指向新服务器的IP和端口15211。确保防火墙开放这个端口,避免连接问题。 总结步骤应该是:备份数据、迁移数据、迁移配置文件、安装Docker环境、启动容器、测试验证。需要详细说明每一步的操作命令和注意事项,尤其是数据完整性和权限问题,避免迁移后数据库无法启动。</think>### 运行Oracle 11g的Docker容器迁移步骤 #### 1. **备份容器配置与数据** - **查看容器配置** 使用`docker inspect og`查看当前容器的详细信息,包括卷映射、端口绑定等参数[^2]。 示例输出关键字段: ```bash "Mounts": [ { "Source": "/data/oracle/oradata/test_data", "Destination": "/home/oracle/app/oracle/oradata/helowin" }, ... ] "Ports": { "1521/tcp": [{"HostPort": "15211"}] } ``` - **持久化数据备份** 用户已通过卷映射将数据存储在宿主机目录`/data/oracle/oradata`下,需将此目录完整打包迁移: ```bash tar -czvf oracle_data.tar.gz /data/oracle/oradata ``` #### 2. **迁移到新服务器** - **传输数据与配置** 将`oracle_data.tar.gz`和`docker-compose.yml`复制到新服务器: ```bash scp oracle_data.tar.gz user@new_server:/target_path/ scp docker-compose.yml user@new_server:/target_path/ ``` - **解压数据并恢复目录结构** 在新服务器上解压并确保目录路径与原服务器一致: ```bash tar -xzvf oracle_data.tar.gz -C / chown -R 1000:1000 /data/oracle/oradata # 根据容器内Oracle用户UID/GID调整权限 ``` #### 3. **新服务器环境准备** - **安装Docker及依赖** 确保新服务器已安装Dockerdocker-compose,版本需与原服务器一致: ```bash yum install docker docker-compose -y systemctl start docker ``` - **拉取Oracle 11g镜像** 若镜像未公开,需提前从原服务器导出镜像并导入新服务器: ```bash docker save helowin/oracle_11g > oracle11g.tar scp oracle11g.tar user@new_server:/target_path/ docker load -i oracle11g.tar ``` #### 4. **启动容器并验证** - **通过docker-compose启动** 确保新服务器的`docker-compose.yml`中卷路径和端口映射正确: ```yaml volumes: - "/data/oracle/oradata/test_data:/home/oracle/app/oracle/oradata/helowin" - "/data/oracle/oradata/flash_recovery_area:/home/oracle/app/oracle/flash_recovery_area/helowin" ports: - "15211:1521" ``` 启动容器: ```bash docker-compose up -d ``` - **验证数据库状态** 进入容器检查监听服务和数据库连接: ```bash docker exec -it og bash su - oracle lsnrctl status # 查看监听状态 sqlplus / as sysdba # 登录数据库 SELECT status FROM v$instance; # 应返回"OPEN" ``` #### 5. **故障排查** - **常见问题** - **权限错误**:检查宿主机目录权限是否与容器内Oracle用户匹配(UID/GID可通过`docker exec og id oracle`获取)。 - **端口冲突**:确保新服务器15211端口未被占用。 - **数据损坏**:从备份恢复数据,避免直接操作容器内数据库文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值