docker4_创建容器

news2024/10/7 18:29:36

docker4_搭建hadoop集群

    • 1集群规划
      • 进入容器base_centos
    • 2创建容器
      • 创建三个docker容器,分别作为三个结点(注意端口的设置)
        • gpb_hdp_node3 容器
        • gpb_hdp_node2 容器
        • 删除容器
        • 查看已经创好的容器
        • gpb_hdp_node1容器(最后创建)
        • 问题1:容器名和 hostname的区别
    • 3配置hosts文件
        • 问题2:为什么要配置配置hosts
        • 连接进入node1容器
    • 4ssh免密登录

1集群规划

进入容器base_centos

docker exec -it gpb_base_centos bash

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2创建容器

创建三个docker容器,分别作为三个结点(注意端口的设置)

gpb_hdp_node3 容器

docker run -d --name gpb_hdp_node3 -p 10124:22 --privileged gpb_base_node:v1 /usr/sbin/init

gpb_hdp_node2 容器

docker run -d --name gpb_hdp_node2 -p 10123:22 --privileged gpb_base_node:v1 /usr/sbin/init

删除容器

docker rm -f 1e560fca3906

查看已经创好的容器

docker ps
docker ps -a

gpb_hdp_node1容器(最后创建)

docker run -d --name gpb_hdp_node1 \
 -p 10122:22 \
 -p 8088:8088 \
 -p 9870:9870 \
 -p 50070:50070 \
 -p 10000:10000 \
 -p 19888:19888 \
 -p 4040:4040 \
 -p 8080:8080 \
 -p 7077:7077 \
 --link gpb_hdp_node2:node2 \
 --link gpb_hdp_node3:node3 \
 --privileged \
 gpb_base_node:v1 /usr/sbin/init
这个命令用于在 Docker 中运行一个 Hadoop 分布式集群下的节点容器,下面是各个参数的解释:
run - 运行一个容器。
-d - 后台运行容器,并打印容器 ID--name - 设置容器的名称为 gpb_hdp_node1。
-p - 将容器内部的通信端口映射到宿主机上的端口,具体映射的端口包括:
10122:22:将容器内部的 SSH 服务端口 22 映射到宿主机的端口 10122,让宿主机可以通过这个端口远程登录到容器中。
8088:8088:将容器内部的 Hadoop Application Master 端口映射到宿主机的端口 80889870:9870:将容器内部的 Hadoop Namenode HTTP 端口映射到宿主机的端口 987050070:50070:将容器内部的 Hadoop Namenode 端口映射到宿主机的端口 5007010000:10000:将容器内部的 Hive JDBC 服务端口映射到宿主机的端口 1000019888:19888:将容器内部的 Hadoop JobHistory 端口映射到宿主机的端口 198884040:4040:将容器内部的 Spark UI 服务端口映射到宿主机的端口 40408080:8080:将容器内部的 Hue 服务端口映射到宿主机的端口 80807077:7077:将容器内部的 Spark Master 端口映射到宿主机的端口 7077--link - 连接到其他容器,并给连接的容器指定别名,具体连接的容器包括:
mysql_test:mysql:连接到名称为 mysql_test 的容器,并将别名设置为 mysql。
gpb_hdp_node2:node2:连接到名称为 gpb_hdp_node2 的容器,并将别名设置为 node2。
gpb_hdp_node3:node3:连接到名称为 gpb_hdp_node3 的容器,并将别名设置为 node3。
--privileged - 开启容器的特权模式,让容器拥有和宿主机相同的特权,这样容器中的各个进程就可以执行一些宿主机上被禁止的操作。
base_node:v1 - 基于 base_node:v1 镜像运行容器。
/usr/sbin/init - 启动容器时运行的命令。使用 init 进程来启动系统,这是一个特殊的进程,负责启动和关闭其他进程,也是系统的第一个进程。
总结:这个 Docker 命令运行了一个包含 Hadoop 分布式集群下节点的容器,容器名称为 hdp_node1,开启了特权模式,将容器内部的多个通信端口映射到宿主机上,同时连接了三个其他容器,并给它们分别指定了别名。

问题1:容器名和 hostname的区别

容器名和 hostname 是两个不同的概念。
容器名是在创建容器时给容器起的一个名字,用来唯一标识一个容器。在使用 Docker 命令时,可以通过容器名来操作对应的容器。例如,可以使用 docker start 命令启动一个容器,其中 container_name 表示容器的名称:
docker start container_name
而 hostname 则是指容器内部的主机名,用来标识容器内部的网络地址。可以通过将主机名添加到 /etc/hosts 文件或使用 DNS 进行解析,来在容器内部访问其他容器或宿主机上的服务。
在 Docker 中,如果没有显式指定容器的 hostname,则默认使用容器名作为主机名。如果需要设置容器的 hostname,则可以在 Dockerfile 中使用 hostname 指令或在容器启动时使用 -h 参数指定。
总之,容器名用于标识容器,而 hostname 则用于在容器内部进行网络通信。

3配置hosts文件

问题2:为什么要配置配置hosts

Hosts 文件是一种计算机操作系统中的文本文件,它用于将 IP 地址映射到主机名,从而实现域名解析。
使用 hosts 文件可以在本地轻松进行域名解析,而无需依赖于 DNS 服务器。
在开发或测试过程中,需要模拟多个虚拟主机或测试环境,也可以通过配置 hosts 文件,使用本地 IP 地址映射不同的域名来实现。

在 Docker 中,如果不配置 hosts 文件,容器内的应用程序可能无法访问本地主机或内部网络的其他计算机。
因此,在某些场景下,需要在容器的 hosts 文件中添加相应的 IP 和域名映射,以实现容器内的网络连接和应用程序的运行。
例如,在 Docker 中运行分布式系统时,需要将每个容器的 IP 地址和主机名称写入 hosts 文件以实现容器之间的相互通信。

连接进入node1容器

docker exec -it gpb_hdp_node1 bash
或
ssh -p 10122 root@localhost

查看/etc/hosts文件

[root@69432059c763 /]# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.6      node2 7797b90e0ccd gpb_hdp_node2
172.17.0.5      node3 068874a8c481 gpb_hdp_node3
172.17.0.7      69432059c763
[root@69432059c763 /]#

具体的容器id以实际情况为准
修改为如下内容

[root@69432059c763 /]# vim /etc/hosts
[root@69432059c763 /]# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.6      node2 7797b90e0ccd gpb_hdp_node2
172.17.0.5      node3 068874a8c481 gpb_hdp_node3
172.17.0.7      node1 69432059c763 gpb_hdp_node1
[root@69432059c763 /]#

然后同步到node2,node3节点
password:111111

scp /etc/hosts root@node2:/etc/hosts
scp /etc/hosts root@node3:/etc/hosts

注意:直接在容器中修改/etc/hosts文件将不会保存,停止重启容器后将会被还原。可以考虑备份一份,每次开机以后替换hosts文件

分别修改node1,node2,node3主机名

echo node1 > /etc/hostname # node1上执行
echo node2 > /etc/hostname # node2上执行
echo node3 > /etc/hostname # node3上执行

4ssh免密登录

连接进入node1容器

  1. 生成公钥私钥
ssh-keygen -t rsa

直接三个回车即可,不用设置密码

  1. 拷贝公钥到同三台机器
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

现在只是设置的node1 到node1 node2 node3的ssh免密登录,还要分别设置node1 到…,node2 到…。的ssh免密登录

ssh node2
ssh-keygen -t rsa
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
ssh node3
ssh-keygen -t rsa
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

三个结点设置完成后,就可以在三台结点间免密登陆。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第十六天 | 104.二叉树的最大深度 559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

代码随想录算法训练营第十六天 | 104.二叉树的最大深度 559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数 1.1 104.二叉树的最大深度 思路: 采用后序遍历确定递归函数的参数和返回值,确定终止条件&#xff…

AJAX 教程---菜鸟教程

文章目录 AJAX 简介AJAX 实例XHR 创建对象XHR 请求向服务器发送请求GET 还是 POST?GET 请求POST 请求url - 服务器上的文件 XHR 响应responseText 属性responseXML 属性 XHR readyState使用回调函数 AJAX 简介 AJAX 是一种在无需重新加载整个网页的情况下&#xff0…

CTR预估之DNN系列模型:FNN/PNN/DeepCrossing

前言 在上一篇文章中 CTR预估之FMs系列模型:FM/FFM/FwFM/FEFM,介绍了FMs系列模型的发展过程,开启了CTR预估系列篇章的学习。FMs模型是由线性项和二阶交互特征组成,虽然有自动学习二阶特征组合的能力,一定程度上避免了人工组合特征…

【Springboot】集成百度地图实现定位打卡功能

目录 第一章 需求分析 第二章 概要设计 第三章 详细设计 3.1 环境搭建 3.1.1 获取百度地图ak 3.1.2 创建springboot项目 3.2 配置application.properties 3.3 配置pox.xml 3.4 创建定位接口 3.5 创建前端页面 3.6 映射静态文件 第一章 需求分析 如图,当…

BERT论文核心点记录

BERT适合分类任务(整段分类后者词分类),对生成任务不友好 使用BERT的方法:只需要在预训练好的BERT基础上新增一个输出层,然后用标记好的数据进行有监督微调 Bidirectional Encoder双向Encoder实质上就是指Transforme…

【分享】用java和pathon实现小红书(Red Booklet)客服自动回复功能、技术实现分析

技术栈:python、java、android,进程管理、socket通信 客户需求: 客户需要在Red Booklet平台做一个可以24小时自动回复用户私信、评论、回关用户等行为的客服软件。他说他们公司有50个小红书号,十几个客服,急需一款代…

正则表达式和文本三剑客题型练习

​ 1、显示/etc/passwd文件中以bash结尾的行; 解释:使用 grep 工具来搜索文件 /etc/passwd 中匹配模式 bash$ 的行。bash$ 是一个正则表达式,其中 $ 表示行结尾。因此,bash$ 匹配以 bash 结尾的行。 grep bash$ /etc/passwd 运…

四元数转换为欧拉角(多解问题)

车辆行驶状态估计(4)中车辆横摆角信息在顺时针转向时存在明显的错误,进行记录输出 2023-05-25-aft02.txt 四元数: -0.00201210.00115721 -0.0005967610.999997 欧拉角:3.14039四元数: -0.00170584 -0.00…

RabbitMQ(2)、MQ的问题、消息可靠性

一、MQ的问题 基于上篇存在的问题 1. 问题说明 MQ在分布式项目中是非常重要的, 它可以实现异步、削峰、解耦,但是在项目中引入MQ也会带来一系列的问题。 今天我们要解决以下几个常见的问题: 消息可靠性问题:如何确保消息被成功送…

MySQL — SQL 优化

文章目录 SQL 优化一、插入数据二、主键优化2.1 数据组织方式2.2 页分裂2.3 页合并2.4 主键设计原则 三、 Order by 优化3.0 排序方式讲解3.1 升序/降序联合索引结构图示3.2 总结 四、Group by优化五、limit优化六、 count优化七、update优化七、update优化 SQL 优化 一、插入…

【MySQL 数据库】5、存储引擎

目录 一、MySQL 体系结构二、存储引擎简介三、InnoDB 存储引擎四、MyISAM五、Memory六、三大存储引擎比较七、存储引擎的选择 一、MySQL 体系结构 连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主…

07:MYSQL----多表查询

目录 1:多表查询概述 2:多表查询分类 3:内连接 3:外连接 4:自连接 5:联合查询-union,union all 6:子查询 1:多表查询概述 select * from emp , dept; emp:表中有6条数据, dept表中有5条数据只查询出来的数据为:30条 概述:指从多张表中查询数据 笛卡尔积…

在vite或者vue-cli中使用.env[mode]环境变量

在项目中总会遇到一些默认的配置,需要我们配置到静态文件中方便我们去获取,这时候就可以用到这个.env环境变量文件,在cli创建的项目中顶层的nodejs会有一个process对象,这个对象可以根据不同的环境获取不同的环境配置文件,但是vite中获取变量的方式不一样。 创建变量文件.env.…

如何编写接口自动化框架系列之requests详解(三)

目录 1.http协议 2.requests介绍 3.requests的主要功能 3.requests的主要功能 3.1 场景1-常用方法 3.2 场景2-通用方法 3.3 场景3-cookies认证方式 4.requests 在项目中的实践 4.1 在接口层实现一个接口 4.2 在测试用例层调用 4.3 项目总结 本文是接口自动化测试框架…

IOC初始化 IOC启动阶段 (Spring容器的启动流程)

[toc](IOC初始化 IOC启动阶段 (Spring容器的启动流程)) IOC初始化 IOC启动阶段 (Spring容器的启动流程) Resource定位过程:这个过程是指定位BeanDefinition的资源,也就是配置文件(如xml)的位置,并将其封装成Resource对…

Makefile基础教程(make的隐式规则)

文章目录 前言一、什么是make的隐式规则二、makefile中出现同名目标时三、一些常见的隐式规则四、查看隐式规则五、隐式规则缺点六、禁用隐式规则1.全局禁用2.局部禁用 总结 前言 本篇文章将给大家介绍make的隐式规则。 一、什么是make的隐式规则 Make 的隐式规则是指 Make …

css选择器及其权重

1. 类型选择器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置

目前&#xff0c;在 ZYNQ 中进行以太网开发的方案&#xff0c;大部分都是基于通过 PS 的 MIO 以 RGMII 接口连接外部 PHY 芯片的方式。但是&#xff0c;由于使用 PS 的 MIO 只能以 RGMII 接口连接外部 PHY 芯片&#xff0c;这就限制了支持其他接口 PHY 芯片的使用&#xff0c;如…

分文件实现温湿度数据管理系统项目

目标&#xff1a; 了解分文件的概念&#xff0c;要依次从C语言的函数声明、变量的存储类别、C语言编译预处理&#xff0c;说起。这些知识点我们之前或多或少接触过&#xff0c;这里做个总结与拓展。经过总结&#xff0c;最后我们归纳出一个实现C语言模块化编程的技巧&#xff…

03-bootstrap-响应式布局-栅格系统

一、概述 1、栅格系统是 Bootstrap 中响应式布局的重要组成部分&#xff0c;旨在实现页面元素的自适应排版。Bootstrap 栅格系统将屏幕宽度分为 12 列&#xff0c;通过在 HTML 元素上添加相应的类名&#xff0c;可以让元素占据指定数量的列数&#xff0c;从而实现灵活的布局效…