Docker容器之常见问题

Docker容器之常见问题

数据问题

目前遇到迁移服务器的问题, 涉及到基础服务的数据迁移(包括mysql, mongodb, redis, rabbitmq等)
例子:

version: "2"

services:
  mysql:
    image: mysql:5.7.11
    container_name: mysql
    hostname: mysql
    mem_limit: 16g
    restart: always
    ports:
     - 30001:3306
    volumes:
  #   - /etc/timezone:/etc/timezone
     - /etc/localtime:/etc/localtime
     - $PWD/conf/mysql/my.cnf:/etc/mysql/my.cnf
     - /root/app/container_data/mysql:/var/lib/mysql
     - /root/app/sqldumps:/sqldumps
    environment:
     - MYSQL_ROOT_PASSWORD=111

分两种情况

  1. 迁移新服务器
    新服务器本身无可用数据, 可以直接将挂载出来的数据文件直接拷贝过去
    内网通的情况, 在旧服务器上执行如下命令,需root权限
scp -r /root/app/container_data root@新服务器ip:/root/app
  1. 迁移已存在且存在有用数据的服务器
    只能通过工具导出导入,如navicat

迁移完后进入docker-compose.yml所在目录

docker-compose up -d

只要数据卷文件都在, docker容器的数据就不会丢失

时区问题

迁移遇到时区问题

  • mysql

将本机的/etc/localtime更改成上海时间(默认UTC), 两种方法根据linux版本而定
1

cp -i /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

或者

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2

vi /etc/timezone

将文件里的内容替换为Asia/Shanghai
在这里插入图片描述

  • MongoDB
    docker-compose.yml
version: "2"

services:
  mongo:
    image:  mongo:3.2.4
    container_name: mongo
    command: mongod --auth 
    mem_limit: 8g
    restart: always
    ports:
     - "37017:27017/tcp"
    volumes:
     - /etc/timezone:/etc/timezone
     - $PWD/data/db:/data/db

docker-compose up -d
发现mongodb的时间不对, 记录的创建时间少了8小时, 初步判断是时区问题
本机正常, 只能进容器查看

docker exec -it mongo /bin/bash

查看时间

date

发现容器时间与服务器时间不符合
于是修改容器时间

vi /etc/timezone

将文件里的内容替换为Asia/Shanghai

进入mongo

mongo
Date()

退出回到本机

docker restart mongo

发现mongo时区正常了, 时间与服务器同步了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值