进入容器
在使用 -d 参数时,容器启动后会进入后台。

某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,原因会在下面说明。

attach 命令
下面示例如何使用 docker attach 命令。

$ docker run -dit ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
243c32535da7        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           nostalgic_hypatia

$ docker attach 243c
root@243c32535da7:/#

注意: 如果从这个 stdin 中 exit,会导致容器的停止。

exec 命令
-i -t 参数
docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。

只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。

当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

$ docker run -dit ubuntu
69d137adef7a8a689cbcb059e94da5489d3cddd240ff675c640c8d96e84fe1f6

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
69d137adef7a        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           zealous_swirles

$ docker exec -i 69d1 bash
ls
bin
boot
dev
...

$ docker exec -it 69d1 bash
root@69d137adef7a:/#

如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用 docker exec 的原因。

更多参数说明请使用 docker exec --help 查看。

复制文件
进到容器找到目标文件,小文件可以直接cat,如果大文件没有命令进行查看可以复制到主机上进行查阅

$ docker cp [容器ID]:/filepath ./

https://github.com/parallax/jsPDF

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title1</title>
</head>

<body>
    <img id="img" src="img.png" alt="">
    <button onclick="test()">click1</button>
    <script src="./jspdf.umd.min.js"></script>
    <script>
        function test() {
            const doc = new jspdf.jsPDF({
                // orientation: "landscape",
                unit: "px", //Possible values are "pt" (points), "mm", "cm", "in", "px", "pc", "em" or "ex"
                // format: [4, 2]
            });
            doc.add
            doc.text("Hello world!", 10, 10);
            doc.addImage(document.getElementById('img'), 'PNG', 30, 30, 16, 16);
            doc.addImage('iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAb1BMVEX////4+Pi3ubtvcnZNUVU+Q0cpLjLr6+x3en0sMTYkKS59gIORk5aUl5n8/Pzw8PFTV1tbX2Pc3d5DSEzn5+g3PECLjpFKTlKFh4qxs7XCxMUwNTq/wcLh4uPV1tZzd3o/Q0jOz9CmqKpjZ2qfoaSrd37mAAABPUlEQVR4AW3TBZKEMBAF0B8GCHzcnbW5/xm30qEyknklcU/DgQpuYRTHUXgLFHw6SemkmcYrlcd8kRYlnlQ1PU0Fp434Qde75Qd+1FUQKiRZjyGfTGNjKhWMmSQXYO3Ibao3MlqBnSRzADhk/ycAdcqclSSHnEUD+KLt8KalMQMqpl3izU5jKxHQGCq8Ud80fq4VfuFZaIyQO4wVPEre5g+RrIAPJrkQSL8OPjv3htQmH8guU5uwgseeP7ITMYBnpdFgvlJPcx0zoLjjzS/FDrVRvH6xsqDYlLx29huRUaFx6YuI1mhKMbddf9trEzca7rmRk/FxpiRXiJO8FDBURyb4yfO7glC8TOpacmAc4ElMEWlc2oGckjwvYVFEB5wjouE6uLBwquypQym/scKrM4njElYaJy182q15aDj/oQMZkS8JH3IAAAAASUVORK5CYII=', 'PNG', 100, 100, 10, 10);
            doc.save("a4.pdf");
        }

        function html2pdf() {
            const doc = new jspdf.jsPDF()
            doc.html(document.body, {
                callback: function (doc) {
                    doc.save();
                },
                x: 10,
                y: 10
            });
        }
    </script>
</body>

</html>

关闭系统防火墙(没有安装防火墙也要操作,关闭了控制台防火墙,主机默认只能被访问22端口,其他端口仍然闭塞,ubuntu安全策略限制)

注意:以下命令会重启服务器:

# 开放所有端口
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
 
# 删除防火墙
apt-get purge netfilter-persistent && reboot
或 rm -rf /etc/iptables && reboot

下载地址:https://www.percona.com/downloads
XtraBackup 的使用参考网络文章吧,这里主要做一次实操记录,操作为阿里云RDS的备份恢复

下载阿里云的数据库备份文件,备份文件如:hins27074834_data_20240617003203.tar.gz

阿里云备份恢复详细文档:https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/restore-the-data-of-an-apsaradb-rds-for-mysql-instance-from-a-physical-backup-file-to-a-self-managed-mysql-database?spm=5176.19908310.help.dexternal.616f1450LZg8vI#e7211d94cfx46

解压后,可以查看 xtrabackup_info 文件中记录的 xtrabackup 的版本号:tool_version: 我mysql 5.7的是2.4.24

那么在 https://www.percona.com/downloads 下载对应的版本,2.4的,注意官网有新的8.3 / 8.0 / 2.4,如果下载最新的8.3版本,安装后没有 innobackupex 命令,并且网上说innobackupex就是软链接到xtrabackup命令的,那么用xtrabackup的话会报错,恢复失败

阿里云mysql 5.7的恢复命令
备件文件解析目录:/var/mysql_bkdata/
使用新的数据库目录:/var/mysql_newdata

#创建目录
sudo mkdir /var/mysql_bkdata
sudo chown -R $USER:$USER /var/mysql_bkdata
sudo mkdir /var/mysql_newdata
sudo chown -R $USER:$USER /var/mysql_newdata

tar -izxvf test.tar.gz -C /var/mysql_bkdata/

#恢复数据预处理
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

#停止MYSQL服务,修改配置文件
sudo vim /etc/my.cnf
datadir = /var/mysql_newdata
#添加
innodb_undo_tablespaces=2
innodb_undo_directory=/var/mysql_newdata

#恢复数据
sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/