docker-compose java.net.UnknownHostException问题

 更新时间:2024年05月13日 16:00:40   作者:胖胖胖胖胖虎  
这篇文章主要介绍了docker-compose java.net.UnknownHostException问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

docker-compose java.net.UnknownHostException

在这里插入图片描述

historyserver      | Caused by: java.lang.RuntimeException: Could not resolve Kerberos principal name: java.net.UnknownHostException: historyserver: historyserver: Name or service not known
historyserver      |    at org.apache.hadoop.security.AuthenticationFilterInitializer.getFilterConfigMap(AuthenticationFilterInitializer.java:90)
historyserver      |    at org.apache.hadoop.http.HttpServer2.getFilterProperties(HttpServer2.java:454)
historyserver      |    at org.apache.hadoop.http.HttpServer2.constructSecretProvider(HttpServer2.java:445)
historyserver      |    at org.apache.hadoop.http.HttpServer2.<init>(HttpServer2.java:339)
historyserver      |    ... 8 more
historyserver      | Caused by: java.net.UnknownHostException: historyserver: historyserver: Name or service not known
historyserver      |    at java.net.InetAddress.getLocalHost(InetAddress.java:1496)
historyserver      |    at org.apache.hadoop.security.SecurityUtil.getLocalHostName(SecurityUtil.java:190)
historyserver      |    at 
...

注释 network_mode: ‘host’

[root@localhost module]# cat docker-compose-hadoop-cluster.yaml
version: "2.2"
services:
  namenode:
    image: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8
    hostname: namenode
    container_name: namenode
    ports:
      - 9000:9000
      - 50070:50070
    restart: always
    #network_mode: 'host'
    environment:
      - CLUSTER_NAME=test
      - HDFS_CONF_dfs_permissions=false
    env_file:
      - ./hadoop.env

  resourcemanager:
    image: bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8
    hostname: resourcemanager
    container_name: resourcemanager
    ports:
      - 8030:8030
      - 8031:8031
      - 8032:8032
      - 8033:8033
      - 8088:8088
    restart: always
    #network_mode: 'host'
    depends_on:
      - namenode
      - datanode1
      - datanode2
      - datanode3
    env_file:
      - ./hadoop.env

  historyserver:
    image: bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8
    hostname: historyserver
    container_name: historyserver
    ports:
      - 8188:8188
    restart: always
    #network_mode: 'host'
    depends_on:
      - namenode
      - datanode1
      - datanode2
      - datanode3
    #volumes:
    #  - ./hadoop/historyserver:/hadoop/yarn/timeline
    env_file:
      - ./hadoop.env

  nodemanager1:
    image: bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8
    hostname: nodemanager1
    container_name: nodemanager1
    ports:
      - 8040:8040
      - 8041:8041
      - 8042:8042
    restart: always
    #network_mode: 'host'
    depends_on:
      - namenode
      - datanode1
      - datanode2
      - datanode3
    env_file:
      - ./hadoop.env


  datanode1:
    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
    hostname: datanode1
    container_name: datanode1
    restart: always
    #network_mode: 'host'
    environment:
      - HDFS_CONF_dfs_datanode_address=0.0.0.0:50010
      - HDFS_CONF_dfs_datanode_ipc_address=0.0.0.0:50020
      - HDFS_CONF_dfs_datanode_http_address=0.0.0.0:50075
    ports:
      - 50010:50010
      - 50020:50020
      - 50075:50075
    depends_on:
      - namenode
    #volumes:
    #  - ./hadoop/datanode1:/hadoop/dfs/data
    env_file:
      - ./hadoop.env

  datanode2:
    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
    hostname: datanode2
    container_name: datanode2
    restart: always
    #network_mode: 'host'
    environment:
      - HDFS_CONF_dfs_datanode_address=0.0.0.0:50012
      - HDFS_CONF_dfs_datanode_ipc_address=0.0.0.0:50022
      - HDFS_CONF_dfs_datanode_http_address=0.0.0.0:50072
    ports:
      - 50012:50012
      - 50022:50022
      - 50072:50072
    depends_on:
      - namenode
    #volumes:
    #  - ./hadoop/datanode2:/hadoop/dfs/data
    env_file:
      - ./hadoop.env

  datanode3:
    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
    hostname: datanode3
    container_name: datanode3
    restart: always
    #network_mode: 'host'
    environment:
      - HDFS_CONF_dfs_datanode_address=0.0.0.0:50013
      - HDFS_CONF_dfs_datanode_ipc_address=0.0.0.0:50023
      - HDFS_CONF_dfs_datanode_http_address=0.0.0.0:50073
    ports:
      - 50013:50013
      - 50023:50023
      - 50073:50073
    depends_on:
      - namenode
    #volumes:
    #  - ./hadoop/datanode3:/hadoop/dfs/data
    env_file:
      - ./hadoop.env

docker compose各参数配置介绍

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,通过使用简单的 YAML 文件来配置应用程序的服务、网络和卷等。

使用 Docker Compose 可以方便地定义和管理容器化应用程序的服务栈。在配置文件中,你可以指定各个服务所需的镜像、环境变量、端口映射、数据卷挂载等信息。通过一次性执行 docker-compose up 命令,Docker Compose 将会自动下载所需的镜像,并启动所有服务。此外,还可以使用 docker-compose down 命令停止服务并清理容器。

使用 Docker Compose 的好处是,它使得部署和管理多个容器变得简单而高效。你可以将整个应用程序的服务定义放在一个文件中,便于版本控制和共享。同时,通过 Docker Compose,你可以轻松部署一致性的开发、测试和生产环境,减少因环境差异而造成的问题。

docker compose 各项参数

  • version: 指定 Docker Compose 文件的版本。例如,version: '3' 表示使用 Docker Compose 文件格式的版本 3。
  • services: 定义各个服务。在这个部分中,你可以为每个服务指定名称、镜像、环境变量、端口映射等信息。
  • image: 指定服务所使用的镜像。例如,image: nginx:latest 表示使用最新版本的 Nginx 镜像。
  • environment: 设置环境变量。你可以通过 environment 参数为服务指定所需的环境变量及其值。例如,environment: - MYSQL_ROOT_PASSWORD=example 表示设置 MySQL 服务的 MYSQL_ROOT_PASSWORD 环境变量为 "example"。
  • ports: 指定端口映射。通过 ports 参数,你可以将容器内部的端口映射到主机的指定端口上。例如,ports: - 8080:80 表示将容器的 80 端口映射到主机的 8080 端口上。
  • volumes: 配置数据卷挂载。使用 volumes 参数可以将容器内的路径与主机上的目录或卷进行映射。例如,volumes: - ./data:/app/data 表示将主机上的 ./data 目录挂载到容器的 /app/data 路径上。
  • networks: 配置网络。通过 networks 参数,你可以为服务指定要连接到的网络。这个参数可用于定义自定义网络以及连接到现有网络。
  • depends_on: 设置服务依赖。使用 depends_on 参数可以指定服务之间的依赖关系。例如,depends_on: - db 表示该服务依赖于名为 db 的服务。

这些只是 Docker Compose 配置文件中一些常用的参数。建议查阅 Docker Compose 官方文档,了解更多参数和配置选项的详细介绍。

代码演示

services:
    client:
    build:
    context: ./client
    dockerfile: ./Dockerfile
    restart: always
    ports:
 
        - 9540:9540
 
    volumes:
 
        - upload:/usr/share/nginx/html/static
 
    depends_on:
 
        - servers
 
 
servers:
 
    build:
    context: ./servers
    dockerfile: ./Dockerfile
    command: npm run start:docker
    restart: always
 
    ports:
 
        - 8080:8080
 
    volumes:
 
        - upload:/upload
 
    depends_on:
 
        - mysql
        - redis
    
 
 
mysql:
 
    image: mysql
 
    command: mysqld --character-set-server=utf8mb4 --collation-                            
    server=utf8mb4_unicode_ci
 
    restart: always
    
    ports:
 
        - 20003:3306
 
    environment:
 
    MYSQL_ROOT_PASSWORD: 'root'
    MYSQL_DATABASE: 'BASE_DB'
 
    volumes:
 
        - mysql:/var/lib/mysql
        - ./db/kapok.sql:/docker-entrypoint-initdb.d/kapok.sql
 
adminer:
 
    image: adminer
    restart: always
    ports:
    8088:8080
  
redis:
 
    image: redis
    restart: always
 
    ports:
 
        - 20004:6379
 
    volumes:
 
        - redis:/data
  • client 服务:这是一个前端服务,使用了一个 Dockerfile 来构建镜像。它将容器内部的 9540 端口映射到主机的 9540 端口上,并将容器内的 /usr/share/nginx/html/static 路径挂载到名为 upload 的数据卷上。此服务依赖于名为 servers 的服务。
  • servers 服务:这是一个后端服务,同样使用了一个 Dockerfile 来构建镜像。它通过运行 npm run start:docker 命令来启动服务。该服务将容器内部的 8080 端口映射到主机的 8080 端口上,并将容器内的 /upload 路径挂载到名为 upload 的数据卷上。此服务依赖于名为 mysql 和 redis 的服务。
  • mysql 服务:这是一个 MySQL 数据库服务,使用了官方的 MySQL 镜像。该服务将容器内部的 3306 端口映射到主机的 20003 端口上,并设置了一些环境变量来配置 MySQL 实例。此服务还将容器内的 /var/lib/mysql 路径挂载到名为 mysql 的数据卷上,并将主机上的 ./db/kapok.sql 文件挂载到容器内的 /docker-entrypoint-initdb.d/kapok.sql 路径上。
  • redis 服务:这是一个 Redis 缓存服务,使用了官方的 Redis 镜像。该服务将容器内部的 6379 端口映射到主机的 20004 端口上,并将容器内的 /data 路径挂载到名为 redis 的数据卷上。

最后,还定义了三个数据卷 mysql、redis 和 upload,用于持久化存储数据库数据、Redis 数据和前端上传的文件。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker容器启动和停止的操作指南

    Docker容器启动和停止的操作指南

    Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包在一个轻量级的容器中,并在任何支持 Docker 的机器上运行,本文将详细介绍如何精确地启动和停止 Docker 容器,提供一系列常见的 Docker 启动与停止操作的代码示例,帮助你快速上手,需要的朋友可以参考下
    2025-04-04
  • docker快速安装使用kibana流程

    docker快速安装使用kibana流程

    这篇文章主要为大家介绍了docker快速安装使用kibana详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 在docker中搭建部署clickhouse过程

    在docker中搭建部署clickhouse过程

    文章介绍了在Docker中部署ClickHouse并进行网关日志存储的步骤,包括创建ClickHouse容器、修改用户配置、使用DBeaver连接以及在Spring Boot中集成ClickHouse进行读写操作
    2024-11-11
  • Docker可视化面板Portainer的实现

    Docker可视化面板Portainer的实现

    Portainer是一个免费的容器管理工具,支持Docker环境的可视化管理,通过Portainer,用户可以轻松地在Windows或Linux容器中部署服务,大大简化了Docker容器的管理工作,感兴趣的可以了解一下
    2024-11-11
  • 退出docker run的几种实现方式

    退出docker run的几种实现方式

    文章总结:本文介绍了几种退出Docker容器的方法,包括在容器内使用`exit`命令、在命令行界面中使用`Ctrl+D`组合键、使用`Ctrl+C`中断进程、通过`docker stop`命令停止容器以及使用`docker kill`命令强制停止容器
    2026-01-01
  • 通过提前bake Docker镜像加快基础设施的启动速度

    通过提前bake Docker镜像加快基础设施的启动速度

    这篇文章主要介绍了通过提前bake Docker镜像加快基础设施的启动速度的相关资料,需要的朋友可以参考下
    2017-01-01
  • docker端口映射及外部无法访问问题

    docker端口映射及外部无法访问问题

    这篇文章主要介绍了docker端口映射及外部无法访问问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 使用Docker部署GPUStack过程

    使用Docker部署GPUStack过程

    GPUStack是一款基于Docker的GPU计算平台,支持异构GPU集群,通过简单的Docker命令即可启动GPUStack服务器和worker,并通过Web界面进行管理和监控
    2026-01-01
  • 已有docker镜像构建过程分析(使用示例)

    已有docker镜像构建过程分析(使用示例)

    docker history命令用于查看指定镜像的历史层信息,它显示了镜像创建过程中的每一层,包括创建时间、创建者、大小和注释等信息,本文介绍已有docker镜像构建过程分析,感兴趣的朋友一起看看吧
    2024-12-12
  • 详解centos7 docker1.12安装私有仓库

    详解centos7 docker1.12安装私有仓库

    本篇文章主要介绍了centos7 docker1.12安装私有仓库,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论