使用 Docker 安装和管理 Neo4j 图数据库

使用 Docker 安装和管理 Neo4j 图数据库

一、Docker 环境安装配置

1.1 Docker 安装步骤

下载特定版本的 Docker 二进制包
bash 复制代码
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
解压 Docker 包
bash 复制代码
tar xzvf docker-*.tgz
复制到系统路径
bash 复制代码
sudo cp docker/* /usr/bin/
创建 Docker 服务文件
bash 复制代码
cat << EOF | sudo tee /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF
重新加载 systemd 并启动服务
bash 复制代码
# 重新加载 systemd
sudo systemctl daemon-reload

# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 检查 Docker 服务状态
sudo systemctl status docker

1.2 验证安装

bash 复制代码
# 查看 Docker 版本
docker --version

# 运行测试容器
docker run hello-world

二、Docker 常用操作命令

2.1 镜像管理

查看镜像
bash 复制代码
# 列出本地镜像
docker images

# 列出所有镜像(包括中间层)
docker images -a

# 搜索 Docker Hub 上的镜像
docker search ubuntu
拉取镜像
bash 复制代码
# 拉取最新版
docker pull ubuntu

# 拉取指定版本
docker pull ubuntu:20.04
删除镜像
bash 复制代码
# 删除指定镜像
docker rmi image_id

# 删除指定标签镜像
docker rmi ubuntu:latest
镜像导入导出
bash 复制代码
# 导出镜像到文件
docker save -o backup.tar image_name

# 从文件导入镜像
docker load -i backup.tar

# 重命名镜像
docker tag old_name new_name

# 查看镜像历史
docker history image_name

# 查看镜像详细信息
docker inspect image_name

2.2 容器管理

运行容器
bash 复制代码
# 交互式运行容器
docker run -it ubuntu /bin/bash

# 后台运行容器
docker run -d nginx

# 指定容器名称
docker run --name myapp nginx

# 端口映射
docker run -p 8080:80 nginx

# 目录挂载
docker run -v /host:/container nginx

# 环境变量设置
docker run -e VAR_NAME=value nginx
查看容器
bash 复制代码
# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 查看最新创建的容器
docker ps -l

# 只显示容器ID
docker ps -q

# 过滤运行状态的容器
docker ps -f status=running
容器操作
bash 复制代码
# 启动容器
docker start container_id

# 停止容器
docker stop container_id

# 重启容器
docker restart container_id

# 暂停容器
docker pause container_id

# 恢复容器
docker unpause container_id
进入容器
bash 复制代码
# 进入运行中的容器
docker exec -it container_id /bin/bash

# 使用 sh 进入
docker exec -it container_id /bin/sh
删除容器
bash 复制代码
# 删除已停止的容器
docker rm container_id

# 强制删除运行中的容器
docker rm -f container_id

# 删除所有停止的容器
docker container prune

# 删除所有容器(谨慎使用)
docker rm $(docker ps -aq)

三、Neo4j 图数据库部署

3.1 加载 Neo4j 镜像

bash 复制代码
# 从文件加载镜像
docker load -i neo4j_xxx.tar

3.2 启动 Neo4j 容器

bash 复制代码
docker run --name neo4j \
  -v /root/neo4j/data:/data \
  -p 7474:7474 -p 7687:7687 \
  -d \
  -e NEO4J_AUTH=neo4j/password \
  -e NEO4J_PLUGINS='["apoc"]' \
  -e NEO4J_dbms_memory_pagecache_size=1G \
  -e NEO4J_dbms_memory_heap_initial__size=2G \
  -e NEO4J_dbms_memory_heap_max__size=4G \
  neo4j_xxx.tar

参数说明:

  • --name neo4j: 容器名称
  • -v /root/neo4j/data:/data: 数据持久化
  • -p 7474:7474: HTTP 端口映射
  • -p 7687:7687: Bolt 端口映射
  • -d: 后台运行
  • -e NEO4J_AUTH: 设置认证信息(用户名/密码)
  • -e NEO4J_PLUGINS: 安装 APOC 插件
  • 内存相关参数优化性能

3.3 Neo4j 容器管理

检查容器状态
bash 复制代码
# 查看容器是否在运行
docker ps | grep neo4j

# 查看容器详细信息
docker inspect neo4j
查看容器日志
bash 复制代码
# 查看启动日志
docker logs neo4j

# 实时查看日志
docker logs -f neo4j

# 查看最近100行日志
docker logs --tail 100 neo4j
容器操作命令
bash 复制代码
# 停止容器
docker stop neo4j

# 启动容器
docker start neo4j

# 重启容器
docker restart neo4j

# 进入容器内部
docker exec -it neo4j bash

# 查看容器资源使用情况
docker stats neo4j

3.4 访问 Neo4j

访问 Neo4j 浏览器
  1. 打开浏览器访问:http://服务器IP:7474
  2. 使用默认账号登录:
    • 用户名:neo4j
    • 密码:password
常用 Neo4j 命令(容器内)
bash 复制代码
# 进入容器后可以执行
cypher-shell -u neo4j -p password

# 在 Cypher Shell 中执行查询
:server connect

四、最佳实践和注意事项

4.1 数据备份

bash 复制代码
# 备份 Neo4j 数据
docker exec neo4j bin/neo4j-admin dump --database=neo4j --to=/data/backup.dump

# 复制备份文件到宿主机
docker cp neo4j:/data/backup.dump /root/backups/

4.2 性能监控

bash 复制代码
# 监控容器资源使用
docker stats

# 查看容器进程
docker top neo4j

# 检查容器健康状态
docker ps --filter "health=healthy"

4.3 安全问题

  1. 修改默认密码:首次登录后立即修改默认密码
  2. 防火墙配置:只开放必要的端口(7474, 7687)
  3. 数据加密:生产环境建议启用 SSL/TLS
  4. 访问控制:限制可访问 Neo4j 的 IP 地址

4.4 故障排除

bash 复制代码
# 如果容器无法启动,检查日志
docker logs neo4j

# 检查端口占用
netstat -tlnp | grep 7474
netstat -tlnp | grep 7687

# 清理无效容器和镜像
docker system prune -a

五、总结

本文详细介绍了 Docker 环境的安装配置、常用操作命令以及 Neo4j 图数据库的容器化部署。通过 Docker 部署 Neo4j 具有以下优势:

  1. 环境隔离:每个 Neo4j 实例运行在独立的容器中
  2. 快速部署:几分钟内即可完成 Neo4j 的安装配置
  3. 版本管理:轻松切换不同版本的 Neo4j
  4. 资源控制:精确控制容器的 CPU 和内存使用
  5. 易于维护:一键更新、备份和恢复
相关推荐
小高不会迪斯科5 小时前
CMU 15445学习心得(二) 内存管理及数据移动--数据库系统如何玩转内存
数据库·oracle
e***8906 小时前
MySQL 8.0版本JDBC驱动Jar包
数据库·mysql·jar
l1t6 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
失忆爆表症7 小时前
03_数据库配置指南:PostgreSQL 17 + pgvector 向量存储
数据库·postgresql
AI_56787 小时前
Excel数据透视表提速:Power Query预处理百万数据
数据库·excel
小锋学长生活大爆炸7 小时前
【教程】免Root在Termux上安装Docker
运维·docker·容器
进击切图仔7 小时前
常用 Docker 命令备份
运维·docker·容器
SQL必知必会8 小时前
SQL 窗口帧:ROWS vs RANGE 深度解析
数据库·sql·性能优化
Gauss松鼠会8 小时前
【GaussDB】GaussDB数据库开发设计之JDBC高可用性
数据库·数据库开发·gaussdb
+VX:Fegn08959 小时前
计算机毕业设计|基于springboot + vue鲜花商城系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计