jumpserver2.10.2升级到2.28.20出错

之前同事一键部署的jumpserver,版本是2.10.2。由于这个版本有重大漏洞,决定升级到2.28.20。
升级过程中有报错,提示找不到jumpserver/mysql:5.7,但是实际镜像是jumpserver/mysql:5,具体执行报错如下,请教各位大神,应该如何处理?

[root@basic jumpserver-offline-installer-v2.28.20-amd64]# ./jmsctl.sh status
Name Command State Ports

jms_mysql docker-entrypoint.sh --cha … Up (unhealthy) 3306/tcp, 33060/tcp
jms_redis docker-entrypoint.sh redis … Up (healthy) 6379/tcp
[root@basic jumpserver-offline-installer-v2.28.20-amd64]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5d81badc20b jumpserver/mysql:5 “docker-entrypoint.s…” 2 years ago Up 2 years (healthy) 3306/tcp, 33060/tcp jms_mysql
a1ae3c807f23 jumpserver/redis:6-alpine “docker-entrypoint.s…” 2 years ago Up 2 years (healthy) 6379/tcp jms_redis
[root@basicsecurity153-90 jumpserver-offline-installer-v2.28.20-amd64]# ./jmsctl.sh upgrade
Are you sure you want to update the current version to v2.28.20 ? (y/n) (default y): y

  1. Check Configuration File
    Path to Configuration file: /opt/jumpserver/config
    /opt/jumpserver/config/config.txt [ √ ]
    /opt/jumpserver/config/core/config.yml [ √ ]
    /opt/jumpserver/config/koko/config.yml [ √ ]
    /opt/jumpserver/config/mariadb/mariadb.cnf [ √ ]
    /opt/jumpserver/config/mysql/my.cnf [ √ ]
    /opt/jumpserver/config/nginx/lb_http_server.conf [ √ ]
    /opt/jumpserver/config/redis/redis.conf [ √ ]
    /opt/jumpserver/config/nginx/cert/server.crt [ √ ]
    /opt/jumpserver/config/nginx/cert/server.key [ √ ]
    complete

  2. Loading Docker Image
    jumpserver/redis:6.2 <= images/redis:6.2.tar Docker image loaded, skipping
    Docker image not found: images/mysql:5.7.tar
    jumpserver/core:v2.28.20 <= images/core:v2.28.20.tar Docker image loaded, skipping
    jumpserver/koko:v2.28.20 <= images/koko:v2.28.20.tar Docker image loaded, skipping
    jumpserver/lion:v2.28.20 <= images/lion:v2.28.20.tar Docker image loaded, skipping
    jumpserver/magnus:v2.28.20 <= images/magnus:v2.28.20.tar Docker image loaded, skipping
    jumpserver/web:v2.28.20 <= images/web:v2.28.20.tar Docker image loaded, skipping
    complete

  3. Backup database
    Backing up…
    Unable to find image ‘jumpserver/mysql:5.7’ locally
    docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
    See ‘docker run --help’.
    [ERROR] Backup failed!
    Failed to backup the database. Continue to upgrade? (y/n) (default n): n
    [root@basicsecurity153-90 jumpserver-offline-installer-v2.28.20-amd64]# vim jmsctl.sh
    [root@basicsecurity153-90 jumpserver-offline-installer-v2.28.20-amd64]# ./jmsctl.sh upgrade
    Are you sure you want to update the current version to v2.28.20 ? (y/n) (default y): y

  4. Check Configuration File
    Path to Configuration file: /opt/jumpserver/config
    /opt/jumpserver/config/config.txt [ √ ]
    /opt/jumpserver/config/core/config.yml [ √ ]
    /opt/jumpserver/config/koko/config.yml [ √ ]
    /opt/jumpserver/config/mariadb/mariadb.cnf [ √ ]
    /opt/jumpserver/config/mysql/my.cnf [ √ ]
    /opt/jumpserver/config/nginx/lb_http_server.conf [ √ ]
    /opt/jumpserver/config/redis/redis.conf [ √ ]
    /opt/jumpserver/config/nginx/cert/server.crt [ √ ]
    /opt/jumpserver/config/nginx/cert/server.key [ √ ]
    complete

  5. Loading Docker Image
    jumpserver/redis:6.2 <= images/redis:6.2.tar Docker image loaded, skipping
    Docker image not found: images/mysql:5.7.tar
    jumpserver/core:v2.28.20 <= images/core:v2.28.20.tar Docker image loaded, skipping
    jumpserver/koko:v2.28.20 <= images/koko:v2.28.20.tar Docker image loaded, skipping
    jumpserver/lion:v2.28.20 <= images/lion:v2.28.20.tar Docker image loaded, skipping
    jumpserver/magnus:v2.28.20 <= images/magnus:v2.28.20.tar Docker image loaded, skipping
    jumpserver/web:v2.28.20 <= images/web:v2.28.20.tar Docker image loaded, skipping
    complete

  6. Backup database
    Backing up…
    Unable to find image ‘jumpserver/mysql:5.7’ locally
    docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
    See ‘docker run --help’.
    [ERROR] Backup failed!
    Failed to backup the database. Continue to upgrade? (y/n) (default n): y

  7. Backup Configuration File
    Back up to /opt/jumpserver/db_backup/config-v2.28.20-2023-10-09_18:20:22.conf

  8. Apply database changes
    Changing database schema may take a while, please wait patiently
    Pulling mysql (jumpserver/mysql:5.7)…
    ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Backing up…
Unable to find image ‘jumpserver/mysql:5.7’ locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See ‘docker run --help’.
[ERROR] Backup failed!
Failed to backup the database. Continue to upgrade? (y/n) (default n)

方法1.去2.28.20的安装包目录里,有个compose目录,找到mysql的yml文件,把里面的mysql镜像里的版本号,改成5.7
方法2:用docker tag命令,把mysql:5改成mysql:5.7
两种办法都能解决你的问题

好的谢谢!我试试的

你好,按方法1改了之后,升级咋还是报同样的错呢?

现在jumpserver起来后,用不了了。。。

按方法2,试了后,docker tag jumpserver/mysql:5 jumpserver/mysql:5.7,起原来的jumpserver,能起来,但是机器都连不上了,连机器就是Connection closed。没再敢继续升级。。

您好,麻烦再帮忙给看下吧,方法1是改docker-compose-mysql.yml这个文件吗?具体怎么改啊,是把image: jumpserver/mysql:5.7改成image: jumpserver/mysql:5 吗?这样改了没啥效果

[root@ygxb_rrx_0_209 compose]# cat docker-compose-mysql.yml.bak
version: ‘2.4’

services:
core:
depends_on:
mysql:
condition: service_healthy
mysql:
image: jumpserver/mysql:5.7
container_name: jms_mysql
restart: always
command: --character-set-server=utf8
environment:
DB_PORT: $DB_PORT
MYSQL_ROOT_PASSWORD: $DB_PASSWORD
MYSQL_DATABASE: $DB_NAME
volumes:
- ${CONFIG_DIR}/mysql/my.cnf:/etc/mysql/my.cnf
- ${VOLUME_DIR}/mysql/data:/var/lib/mysql
healthcheck:
test: “mysql -h127.0.0.1 -P$$DB_PORT -uroot -p$$MYSQL_ROOT_PASSWORD -e ‘SHOW DATABASES;’”
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
networks:
- net

直接在外面执行 docker tag 镜像名 新镜像名 再重启试试看

改完标签之后,执行升级报镜像错误可以不管,看看服务起来没有

这个试了,原来的jumpserver登不上了,把新的tag删掉,再重启,jumpserver也登不上,最后全量回滚了,才好了。

方法1,您知道还需要修改哪块吗?感觉没改全,还有哪块在校验mysql5.7,需要改下