1.把docker外的文件复制到docker文件中

有两种方法可以将本地文件复制到Docker容器中:

  1. 在Dockerfile中使用
    COPY
    命令将本地文件复制到容器中:
COPY /path/to/local/file /path/inside/container

其中,

/path/to/local/file
是本地文件的路径,
/path/inside/container
是容器内的路径。

  1. 使用
    docker cp
    命令将本地文件复制到运行中的容器中:
docker cp /path/to/local/file container_name:/path/inside/container

其中,

/path/to/local/file
是本地文件的路径,
container_name
是容器名称,
/path/inside/container
是容器内的路径。

2.进入mysql,选择数据库,备份的恢复

把sql的zip文件解压缩,然后复制到docker

sudo docker cp /opt/app/xxx/xxx_20230130.sql 80018a5fe677:/opt

sudo docker ps(查看msyql的id)

sudo docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED        STATUS        PORTS                                                  NAMES
a321543650e6   postgres:13.7   "docker-entrypoint.s…"   4 weeks ago    Up 2 weeks    0.0.0.0:54137->5432/tcp, :::54137->5432/tcp            postgres13.7
f204d8039f90   postgres:14.2   "docker-entrypoint.s…"   5 weeks ago    Up 2 weeks    0.0.0.0:54142->5432/tcp, :::54142->5432/tcp            postgres14.2
80018a5fe677   mysql:5.7       "docker-entrypoint.s…"   5 weeks ago    Up 5 days     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql5.7
9c50c5b0f512   postgres:15     "docker-entrypoint.s…"   4 months ago   Up 4 months   0.0.0.0:5532->5432/tcp, :::5532->5432/tcp              postgres15
9b5c7a2a4a1d   postgres        "docker-entrypoint.s…"   5 months ago   Up 4 months   5432/tcp                                               elegant_cannon

3.进入docker的mysql

sudo docker exec -it 8001 /bin/bash
bash-4.2# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 819
Server version: 5.7.40 MySQL Community Server (GPL)

选择数据库

use xxx;

恢复数据:

source /opt/xxx_20230130.sql