docker 命令实战 单台物理机上使用 Docker 部署 Java 应用、Redis、MySQL、PostgreSQL 和 MinIO
所属分类 docker
浏览量 19
单台物理机上使用 Docker 部署 Java 应用、Redis、MySQL、PostgreSQL 和 MinIO
常用命令覆盖了日常运维中的启动管理、日志查看、数据备份、性能监控等场景,
可根据实际部署情况调整参数
对于多容器管理,建议使用docker-compose来简化操作
容器基础操作
docker -v
Docker version 23.0.0, build e92dd87
查看 Docker 系统信息
docker info
docker ps
# 查看运行中容器的完整命令
docker ps --no-trunc
--no-trunc 参数的作用是 "不截断输出内容",会完整显示容器启动时的完整命令、参数 和 入口点(entrypoint)
查看所有容器(包括停止的)
docker ps -a
启动 / 停止 / 重启容器
docker start [容器ID/名称]
docker stop [容器ID/名称]
docker restart [容器ID/名称]
删除容器
docker rm [容器ID/名称] # 删除停止的容器
docker rm -f [容器ID/名称] # 强制删除运行中的容器
日志管理
实时查看容器日志
docker logs -f [容器ID/名称]
查看指定行数日志
docker logs --tail 200 [容器ID/名称] # 查看最后200行
查看时间段日志
docker logs --since 2023-08-01 --until 2023-08-02 [容器ID/名称]
镜像管理
查看本地镜像
docker images
拉取所需镜像
docker pull redis:alpine
docker pull mysql:8.0
docker pull postgres:15
docker pull minio/minio:latest
构建 Java 应用镜像
docker build -t my-java-app:v1.2 . # 基于当前目录Dockerfile构建
删除镜像
docker rmi [镜像ID/名称]
容器交互
进入容器终端
docker exec -it [容器ID/名称] /bin/bash # 大多数镜像
docker exec -it [容器ID/名称] /bin/sh # Alpine基础镜像
在容器内执行单条命令
docker exec [容器ID/名称] cat /app/config.properties
数据管理
查看数据卷
docker volume ls
docker volume inspect [卷名称] # 查看卷详情
创建数据卷
docker volume create minio-data
docker volume create mysql-data
删除未使用的数据卷
docker volume prune
网络管理
创建自定义网络(推荐容器间通信使用)
docker network create app-network
查看网络列表
docker network ls
将容器连接到网络
docker network connect app-network [容器ID/名称]
各服务专项操作
MySQL
# 进入MySQL命令行
docker exec -it mysql-container mysql -u root -p
# 导出数据库
docker exec mysql-container mysqldump -u root -p[密码] 数据库名 > backup.sql
# 导入数据库
cat backup.sql | docker exec -i mysql-container mysql -u root -p[密码] 数据库名
PostgreSQL
# 进入PostgreSQL命令行
docker exec -it pgsql-container psql -U 用户名 -d 数据库名
# 导出数据库
docker exec pgsql-container pg_dump -U 用户名 数据库名 > backup.sql
# 导入数据库
cat backup.sql | docker exec -i pgsql-container psql -U 用户名 -d 数据库名
Redis
# 进入Redis命令行
docker exec -it redis-container redis-cli
# 查看Redis信息
docker exec -it redis-container redis-cli info
MinIO
# 进入MinIO容器
docker exec -it minio-container /bin/sh
# 使用mc工具(MinIO客户端)配置
docker exec -it minio-container mc config host add myminio http://localhost:9000 用户名 密码
# 查看MinIO存储桶
docker exec -it minio-container mc ls myminio
Java 应用
# 查看Java进程
docker exec [java容器名] jps
# 查看JVM参数
docker exec [java容器名] jinfo [进程ID]
# 线程dump
docker exec [java容器名] jstack [进程ID] > thread_dump.txt
资源监控
查看容器资源占用
docker stats # 实时监控
docker stats --no-stream [容器ID/名称] # 查看一次
常用部署命令示例
# 启动MinIO
docker run -d --name minio \
-p 9000:9000 -p 9001:9001 \
-v minio-data:/data \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
--network app-network \
minio/minio server /data --console-address ":9001"
# 启动Java应用(连接所有服务)
docker run -d --name java-app \
-p 8080:8080 \
-e SPRING_PROFILES_ACTIVE=prod \
--network app-network \
my-java-app:v1.2
把容器内目录复制到宿主机
docker cp 容器名称或ID:容器内目录路径 宿主机目标路径
上一篇
docker info 结果示例说明
mybatisplus IService 与 BaseMapper 的区别
LLM本质上是“猜词”系统,它根本看不懂世界