使用 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 浏览器
- 打开浏览器访问:
http://服务器IP:7474 - 使用默认账号登录:
- 用户名:
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 安全问题
- 修改默认密码:首次登录后立即修改默认密码
- 防火墙配置:只开放必要的端口(7474, 7687)
- 数据加密:生产环境建议启用 SSL/TLS
- 访问控制:限制可访问 Neo4j 的 IP 地址
4.4 故障排除
bash
# 如果容器无法启动,检查日志
docker logs neo4j
# 检查端口占用
netstat -tlnp | grep 7474
netstat -tlnp | grep 7687
# 清理无效容器和镜像
docker system prune -a
五、总结
本文详细介绍了 Docker 环境的安装配置、常用操作命令以及 Neo4j 图数据库的容器化部署。通过 Docker 部署 Neo4j 具有以下优势:
- 环境隔离:每个 Neo4j 实例运行在独立的容器中
- 快速部署:几分钟内即可完成 Neo4j 的安装配置
- 版本管理:轻松切换不同版本的 Neo4j
- 资源控制:精确控制容器的 CPU 和内存使用
- 易于维护:一键更新、备份和恢复