翼度科技»论坛 云主机 服务器技术 查看内容

docker-compose java.net.UnknownHostException问题

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
docker-compose java.net.UnknownHostException

  1. historyserver      | Caused by: java.lang.RuntimeException: Could not resolve Kerberos principal name: java.net.UnknownHostException: historyserver: historyserver: Name or service not knownhistoryserver      |    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 morehistoryserver      | Caused by: java.net.UnknownHostException: historyserver: historyserver: Name or service not knownhistoryserver      |    at java.net.InetAddress.getLocalHost(InetAddress.java:1496)historyserver      |    at org.apache.hadoop.security.SecurityUtil.getLocalHostName(SecurityUtil.java:190)historyserver      |    at ...
复制代码
注释 network_mode: ‘host’
  1. [root@localhost module]# cat docker-compose-hadoop-cluster.yaml
  2. version: "2.2"
  3. services:
  4.   namenode:
  5.     image: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8
  6.     hostname: namenode
  7.     container_name: namenode
  8.     ports:
  9.       - 9000:9000
  10.       - 50070:50070
  11.     restart: always
  12.     #network_mode: 'host'
  13.     environment:
  14.       - CLUSTER_NAME=test
  15.       - HDFS_CONF_dfs_permissions=false
  16.     env_file:
  17.       - ./hadoop.env

  18.   resourcemanager:
  19.     image: bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8
  20.     hostname: resourcemanager
  21.     container_name: resourcemanager
  22.     ports:
  23.       - 8030:8030
  24.       - 8031:8031
  25.       - 8032:8032
  26.       - 8033:8033
  27.       - 8088:8088
  28.     restart: always
  29.     #network_mode: 'host'
  30.     depends_on:
  31.       - namenode
  32.       - datanode1
  33.       - datanode2
  34.       - datanode3
  35.     env_file:
  36.       - ./hadoop.env

  37.   historyserver:
  38.     image: bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8
  39.     hostname: historyserver
  40.     container_name: historyserver
  41.     ports:
  42.       - 8188:8188
  43.     restart: always
  44.     #network_mode: 'host'
  45.     depends_on:
  46.       - namenode
  47.       - datanode1
  48.       - datanode2
  49.       - datanode3
  50.     #volumes:
  51.     #  - ./hadoop/historyserver:/hadoop/yarn/timeline
  52.     env_file:
  53.       - ./hadoop.env

  54.   nodemanager1:
  55.     image: bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8
  56.     hostname: nodemanager1
  57.     container_name: nodemanager1
  58.     ports:
  59.       - 8040:8040
  60.       - 8041:8041
  61.       - 8042:8042
  62.     restart: always
  63.     #network_mode: 'host'
  64.     depends_on:
  65.       - namenode
  66.       - datanode1
  67.       - datanode2
  68.       - datanode3
  69.     env_file:
  70.       - ./hadoop.env


  71.   datanode1:
  72.     image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  73.     hostname: datanode1
  74.     container_name: datanode1
  75.     restart: always
  76.     #network_mode: 'host'
  77.     environment:
  78.       - HDFS_CONF_dfs_datanode_address=0.0.0.0:50010
  79.       - HDFS_CONF_dfs_datanode_ipc_address=0.0.0.0:50020
  80.       - HDFS_CONF_dfs_datanode_http_address=0.0.0.0:50075
  81.     ports:
  82.       - 50010:50010
  83.       - 50020:50020
  84.       - 50075:50075
  85.     depends_on:
  86.       - namenode
  87.     #volumes:
  88.     #  - ./hadoop/datanode1:/hadoop/dfs/data
  89.     env_file:
  90.       - ./hadoop.env

  91.   datanode2:
  92.     image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  93.     hostname: datanode2
  94.     container_name: datanode2
  95.     restart: always
  96.     #network_mode: 'host'
  97.     environment:
  98.       - HDFS_CONF_dfs_datanode_address=0.0.0.0:50012
  99.       - HDFS_CONF_dfs_datanode_ipc_address=0.0.0.0:50022
  100.       - HDFS_CONF_dfs_datanode_http_address=0.0.0.0:50072
  101.     ports:
  102.       - 50012:50012
  103.       - 50022:50022
  104.       - 50072:50072
  105.     depends_on:
  106.       - namenode
  107.     #volumes:
  108.     #  - ./hadoop/datanode2:/hadoop/dfs/data
  109.     env_file:
  110.       - ./hadoop.env

  111.   datanode3:
  112.     image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  113.     hostname: datanode3
  114.     container_name: datanode3
  115.     restart: always
  116.     #network_mode: 'host'
  117.     environment:
  118.       - HDFS_CONF_dfs_datanode_address=0.0.0.0:50013
  119.       - HDFS_CONF_dfs_datanode_ipc_address=0.0.0.0:50023
  120.       - HDFS_CONF_dfs_datanode_http_address=0.0.0.0:50073
  121.     ports:
  122.       - 50013:50013
  123.       - 50023:50023
  124.       - 50073:50073
  125.     depends_on:
  126.       - namenode
  127.     #volumes:
  128.     #  - ./hadoop/datanode3:/hadoop/dfs/data
  129.     env_file:
  130.       - ./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 官方文档,了解更多参数和配置选项的详细介绍。

代码演示
  1. services:
  2.     client:
  3.     build:
  4.     context: ./client
  5.     dockerfile: ./Dockerfile
  6.     restart: always
  7.     ports:

  8.         - 9540:9540

  9.     volumes:

  10.         - upload:/usr/share/nginx/html/static

  11.     depends_on:

  12.         - servers


  13. servers:

  14.     build:
  15.     context: ./servers
  16.     dockerfile: ./Dockerfile
  17.     command: npm run start:docker
  18.     restart: always

  19.     ports:

  20.         - 8080:8080

  21.     volumes:

  22.         - upload:/upload

  23.     depends_on:

  24.         - mysql
  25.         - redis
  26.    


  27. mysql:

  28.     image: mysql

  29.     command: mysqld --character-set-server=utf8mb4 --collation-                           
  30.     server=utf8mb4_unicode_ci

  31.     restart: always
  32.    
  33.     ports:

  34.         - 20003:3306

  35.     environment:

  36.     MYSQL_ROOT_PASSWORD: 'root'
  37.     MYSQL_DATABASE: 'BASE_DB'

  38.     volumes:

  39.         - mysql:/var/lib/mysql
  40.         - ./db/kapok.sql:/docker-entrypoint-initdb.d/kapok.sql

  41. adminer:

  42.     image: adminer
  43.     restart: always
  44.     ports:
  45.     8088:8080
  46.   
  47. redis:

  48.     image: redis
  49.     restart: always

  50.     ports:

  51.         - 20004:6379

  52.     volumes:

  53.         - 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 数据和前端上传的文件。

总结

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

来源:https://www.jb51.net/server/321058bkx.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具