docker4_创建容器

这篇具有很好参考价值的文章主要介绍了docker4_创建容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1集群规划

进入容器base_centos

docker exec -it gpb_base_centos bash

docker4_创建容器
docker4_创建容器
docker4_创建容器

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

三个结点设置完成后,就可以在三台结点间免密登陆。文章来源地址https://www.toymoban.com/news/detail-463288.html

到了这里,关于docker4_创建容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker 】Docker 客户端,容器使用,启动容器,启动已停止运行的容器,停止一个容器,进入容器

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 可以通过命令 dock

    2024年02月11日
    浏览(46)
  • 使用Docker容器配置ssh服务,远程直接进入容器

    最终版 hub仓库 https://hub.docker.com/ 目录 hub仓库 docker命令 镜像 查看所有镜像 运行镜像 容器 查看所有容器 可以在当前终端挂载 停止容器 删除容器s 使用容器 Docker使用镜像配置ssh服务后用ssh登陆 1. 先上dockerhub上pull一个需要的镜像下来,然后run这个镜像生成一个容器。 2. 进入

    2024年02月08日
    浏览(44)
  • docker运行并进入MySQL容器

    这是一个使用Docker命令行工具来启动一个MySQL容器的命令。下面,让我们来详细解析这条命令: docker run docker : Docker的命令行工具。 run : Docker的子命令,用于启动一个新的容器实例。 -itd 这是三个组合起来的标志: -i 或 --interactive : 保持标准输入打开,即使没有附加到容器的

    2024年02月09日
    浏览(47)
  • 使用Vscode连接进入docker容器

    使用Vscode连接进入docker容器 在使用Vscode连接远程服务器进行操作时,使用Vscode丰富的插件进行,使用Remote-SSH连接服务器,但是该插件进行连接是不能进入到docker容器内部进行操作。想要直接进入到容器内部进行工作需要另外的方法。 方法一:使用ssh工具进行连接,容器在运

    2024年02月16日
    浏览(48)
  • Docker使用root用户进入容器

    -u 0 使用该 -u 选项时,您可以使用 root 用户( ID = 0 )而不是提供的默认用户登录Docker容器. root(id = 0)是容器中的默认用户。图像开发人员可以创建其他用户。这些用户可以通过名称访问。传递数字ID时,用户不必在容器中。

    2024年02月12日
    浏览(35)
  • Docker容器进入的4种方式

    在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。 进入Docker容器比较常见的几种做法如下: 使用docker attach 使用SSH 使用insenter 使用exec Docker提供了attach命令来进入Do

    2024年02月13日
    浏览(38)
  • 【Ubuntu18.04 docker 启动容器,进入容器,执行脚本】

    1,启动容器 1,当前容器已经启动,怎么进入呢? -----进入步骤 一、 docker 服务启动启动 二、docker 容器自动启动 三、设置容器内的服务自动启动: 1-首先制作一个启动脚本start_fw.sh 参考 2-将容器制作为镜像,然后启动容器 3-

    2024年02月11日
    浏览(45)
  • 怎么进入docker容器获取jar包并下载到本地

    今天公司通过jenkins发布到测试环境的之后,测试小姐姐在测试居然发现功能没有更新上去。查看gitlib看代码有合并,查看jenkins配置的打包的分支也没有错,查看jenkins打包日志也有拉最新代码打包,诡异,于是想去服务器上的docker 镜像拉取jar看看是啥情况。 连接linux服务器的

    2024年02月13日
    浏览(41)
  • Docker进入容器出现:bash: vi: command not found

    docker基础容器中bash: vi: command not found问题解决 | 你邻座的怪同学-CSDN 在使用 Docker 容器时,有时候里边没有安装vim,敲vim命令时提示说: vim: command not found 。 这个时候就需要安装vim,可是当你敲 apt-get install vim 命令时,提示: 操作步骤: 使用以下命令: 这个命令的作用是:

    2024年02月09日
    浏览(44)
  • Docker exec进入容器后不显示容器ID,显示bash-4,4#的解决方法

    错误情景 : docker exec -it 6829a4eaef65 bash 命令进入容器, 不是出现 [root@6829a4eaef65 /]# 而是出现了bash-4.4# 产生原因 :命令行显示-bash-4.2# 的原因是在当前用户的root目录缺少了两个文件 解决方法: 1. 执行命令: docker exec -it 6829a4eaef65 bash 进入容器 2. 执行命令: 执行命令,持久化

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包