如何在docker中持久化默认的keycloak数据库?

Ill*_*ian 0 docker

我有一个泊坞窗图像:

REPOSITORY                  TAG       IMAGE ID       CREATED        SIZE
quay.io/keycloak/keycloak   18.0.2    ce57c5afb395   5 months ago   590MB
Run Code Online (Sandbox Code Playgroud)

我运行这个命令:

sudo docker run -p 8080:8080  -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:18.0.2 start-dev --http-relative-path /auth
Run Code Online (Sandbox Code Playgroud)

但问题是,当我停止服务器时,我创建的用户领域将被删除,如何创建容器?

如何只运行一个容器,而不是每次执行 docker run 时都会创建一个新的容器。还有其他命令吗?

mas*_*eyb 5

Keycloak默认使用H2数据库,您需要将数据库文件保存在一个卷中,并在后续中重复使用该卷docker run


  1. docker volume为H2数据库文件创建一个
docker volume create keycloak
Run Code Online (Sandbox Code Playgroud)
  1. 在新卷上设置正确的权限(镜像容器keycloak中的用户quay.io/keycloak/keycloak:18.0.2UID: 1000, GID: 0
docker run \
    --rm \
    --entrypoint chown \
    -v keycloak:/keycloak \
    alpine -R 1000:0 /keycloak
Run Code Online (Sandbox Code Playgroud)
  1. 使用docker卷来持久化H2数据库
docker volume create keycloak
Run Code Online (Sandbox Code Playgroud)