深圳腾网站建设,wordpress的中文插件安装教程视频教程,免费架设网站,农村学校资源网站建设与研究Linux 下 Docker 容器部署指南#xff08;Java Redis 示例#xff09;一、Docker 镜像源配置二、构建 Docker 镜像三、运行 Docker 容器四、查看容器日志五、实践思考与扩展在 Linux 上部署 Java 应用到 Docker 容器中#xff0c;并访问宿主机的 Redis 服务#xff0c;是一…
Linux 下 Docker 容器部署指南Java Redis 示例一、Docker 镜像源配置二、构建 Docker 镜像三、运行 Docker 容器四、查看容器日志五、实践思考与扩展在 Linux 上部署 Java 应用到 Docker 容器中并访问宿主机的 Redis 服务是一个常见场景。本文将结合实际操作步骤详细讲解 Docker 镜像配置、镜像构建、容器启动及宿主机 Redis 访问问题的解决方案。 一、Docker 镜像源配置
国内访问 Docker Hub 较慢建议配置国内镜像源来加速镜像下载。编辑 Docker 配置文件 /etc/docker/daemon.json
{registry-mirrors: [https://docker.mirrors.ustc.edu.cn,https://mirror.iscas.ac.cn/docker/,https://docker.m.daocloud.io]
}
配置完成后执行以下命令重新加载配置并重启 Docker 服务
systemctl daemon-reload
systemctl restart docker⚠️ 注意修改镜像源后最好先执行 docker info | grep -i mirror确认镜像源已生效。
二、构建 Docker 镜像
在项目根目录下创建 Dockerfile例如
# 使用官方OpenJDK 8运行时作为父镜像Alpine Linux版本非常小巧
FROM openjdk:8-jdk-alpine# 在镜像内设置一个工作目录后续的命令都会在这个目录下执行
WORKDIR /app# 将当前目录下的jar文件复制到镜像的工作目录中并可重命名
COPY sd-api-assistant-1.0.0-SNAPSHOT.jar /app/sd-api-assistant.jar# 告诉Docker容器在运行时监听指定的端口根据你的应用实际端口修改
EXPOSE 9799# 配置容器启动后执行的命令
ENTRYPOINT [java, -jar, sd-api-assistant.jar]然后执行构建命令
docker build -t sd-api-assistant:1.0.0 .构建完成后你可以通过 docker images 查看本地镜像列表。
(base) [rootlocalhost aiyunhua_api]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sd-api-assistant 1.0.0 0ed1e0438307 26 minutes ago 557MB三、运行 Docker 容器
普通启动
如果应用不需要访问宿主机服务直接运行
docker run -p 9799:9799 --name aiyunhua-container sd-api-assistant:1.0.0访问宿主机 Redis 服务
在容器里访问宿主机的 Redis需要注意
容器里的 127.0.0.1 只指容器本身不能直接访问宿主机
Linux Docker 没有默认的 host.docker.internal需要手动添加
运行容器时添加 --add-host 参数
docker run \--add-hosthost.docker.internal:host-gateway \-d \-p 9799:9799 \--name aiyunhua-container \sd-api-assistant:1.0.0
在 Java 项目的 application.yml 中配置 Redis
spring:redis:host: host.docker.internalport: 6379
查看运行中的容器
(base) [rootlocalhost aiyunhua_api]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6a5704734c2 sd-api-assistant:1.0.0 java -jar sd-api-as… 22 minutes ago Up 22 minutes 0.0.0.0:9799-9799/tcp, :::9799-9799/tcp aiyunhua-container注意事项
宿主机 Redis 必须监听所有网卡bind 0.0.0.0确保防火墙放行 6379 端口
firewall-cmd --zonepublic --add-port6379/tcp --permanent
firewall-cmd --reloadRedis 默认可能开启 protected-mode yes需要设置 protected-mode no 以允许外部访问请确保在安全网络环境下使用。
四、查看容器日志
容器启动后可以通过日志监控应用运行状态
docker logs -f aiyunhua-container五、实践思考与扩展
宿主机服务访问问题
Windows / Mac Docker Desktop 默认支持 host.docker.internalLinux 需要手动添加 --add-host 或直接使用宿主机 IP
Docker Compose 使用场景
如果有多个服务Java 应用 Redis MySQL 等推荐使用 docker-compose.yml 管理网络和依赖关系通过 extra_hosts 可以统一配置宿主机访问
安全性
容器访问宿主机服务时要确保防火墙和网络安全对外开放 Redis 端口时建议设置密码或仅在内网使用
镜像优化
使用轻量级基础镜像如 Alpine可减小镜像体积将 jar 包及依赖分层 COPY可减少构建时间