Skip to content

linux docker back up #24

Open
Open
@openHacking

Description

@openHacking

备份与加载镜像

1. 导出镜像

docker save mysql > mysql.tar
  1. 小文件推送到其他服务器
scp mysql.tar 100.100.100.100:/download/

3. 加载镜像

# 如果原先有镜像。先删除
docker rmi mysql
docker load < mysql.tar

备份与加载容器

1.停掉容器

docker stop dev-mysql

2. 压缩数据

tar -zcvf dev-mysql.tar.gz dev-mysql

3. 启动容器

docker restart dev-mysql

4. 推送到其他服务器

scp dev-mysql.tar.gz 100.100.100.100:/download/

5. 解压数据

tar -zxvf dev-mysql.tar.gz

6. 启动mysql容器

docker run -p 3307:3306 --name dev-mysql \
-v /etc/localtime:/etc/localtime \
-v /software/dev-mysql/conf:/etc/mysql/conf.d \
-v /software/dev-mysql/logs:/logs \
-v /software/dev-mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql --lower_case_table_names=1

断点续传+后台执行

小文件使用以下命令执行即可

scp dev-mysql.tar.gz 100.100.100.100:/download/

如果dev-mysql.tar.gz文件过大,则可以代替为

yum install screen

screen -S rsync

nohup rsync -e ssh -avr dev-mysql.tar.gz 100.100.100.100:/download/dev-mysql.tar.gz

# ctrl+Z
bg

screen -d rsync

传送完毕后杀掉rsync窗口

如何知道传输完毕了?
使用stat dev-mysql.tar.gz查看两个服务器上的文件大小,对比下,是一样大就是传输完成了

之后要把rsync窗口杀掉

# 列出所有窗口
screen -ls
# 得到窗口编号
# 13740.rsync   (Detached)

# 杀掉这个窗口
screen -X -S 13740 quit

默认docker-compose 的数据卷位置

找到mysql数据卷位置

docker info | grep "Docker Root Dir"

定位到/var/lib/docker/volumes找到wordpress_db-data备份

多个文件同时传输

断点续传+后台执行

screen -S rsync

nohup rsync -e ssh -avr wordpress.tar.gz 100.100.100.100:/download/wordpress.tar.gz
nohup rsync -e ssh -avr wordpress_db-data.tar.gz 100.100.100.100:/download/wordpress_db-data.tar.gz
nohup rsync -e ssh -avr wordpress.tar 100.100.100.100:/download/wordpress.tar

# 查看全部任务
jobs -l

# 暂停
# ctrl+Z

# 三个任务全部放到后台
bg %1
bg %2
bg %3

# 断开会话
screen -d rsync

构建镜像并启动

docker build -t my-docker .

启动my-docker容器

docker run -p 3000:3000 --name my-docker-container \
-d my-docker

gitlab 容器nginx配置

upstream gitlab {
   # 内网ip
    server 100.100.100.101:9980;
}

#配置gitlab访问地址
server {
    listen 80;
    server_name gitlab.lwebapp.com;
    location / {
        # 设置最大允许上传单个的文件大小
        client_max_body_size 1024m;
        proxy_redirect off;
        #以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 反向代理到 gitlab 内置的 nginx
        proxy_pass http://gitlab;
        #index index.html index.htm;
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions