使用Dockerfile制作基于Centos7支持ssh的java环境镜像

Dockerfile搭建SSH+Java环境
本文介绍如何使用Dockerfile创建一个包含SSH服务和Java环境的CentOS7镜像,实现快速部署并简化环境配置流程。

使用Dockerfile制作基于Centos7支持ssh的java环境镜像

@[docker | centos7 | java8 | ssh]

在一些特定的环境中,我们经常重复的去配置系统环境,因此学习了下Dockerfile制作镜像,
从而达到快速部署的目的。

1.环境准备
   我的环境:Ubuntu16.04
   docker版本:Docker version 17.12.0-ce(docker安装参考网:https://docs.docker.com/install/
2.在/root目录下新建docker_file目录用于存放Dockerfile和其他相关文件

$ mkdir docker_file
$ cd docker_file

3.编辑在容器中启动sshd服务及环境变量配置启用脚本
   因为ssh连接容器,容器并没有启动/etc/profile ,因此需要在容器启动的时候export环境变量
   export /root/.bashrc 的目的和上面一样,原因是docker 容器默认使用bashrc

$ vim run.sh
#!/bin/bash
export env
echo JAVA_HOME=$JAVA_HOME >> /etc/profile
echo JAVA_HOME=$JAVA_HOME >> /root/.bashrc
echo MAVEN_HOME=$MAVEN_HOME >> /etc/profile
echo MAVEN_HOME=$MAVEN_HOME >> /root/.bashrc
echo PATH=$PATH >> /etc/profile
echo PATH=$PATH >> /root/.bashrc
echo CLASSPATH=$CLASSPATH >> /etc/profile
echo CLASSPATH=$CLASSPATH >> /root/.bashrc
echo "export PATH JAVA_HOME CLASSPATH MAVEN_HOME" >> /etc/profile
echo "export PATH JAVA_HOME CLASSPATH MAVEN_HOME" >> /root/.bashrc
source /etc/profile
source /root/.bashrc
/usr/sbin/sshd -D

4.在宿主机上生成RSA密钥

$ ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
$ cp /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub /root/sshd_centos cat ssh_host_rsa_key.pub>authorized_keys

5.在/root/docker_file目录下新建Dockerfile文件

   Dockerfile的常用语法,其中个人建议了解下ENTRYPOINT以及ENTRYPOINT CMD的区别 ,作者当时就是
   在ssh 连接容器java环境未生效的问题上坑过,然后用ENTRYPOINT的方式解决,故此一提。

$ vim Dockerfile

FROM centos:7
MAINTAINER ziyun wlcloudy@163.com

RUN yum -y update
RUN yum -y install openssh-server
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
RUN mkdir -p /root/.ssh
ADD authorized_keys /root/.ssh/authorized_keys

ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
RUN echo "root:123456"|chpasswd

RUN yum install wget -y
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz
RUN wget http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
RUN cd /opt
RUN tar -xvf jdk-8u161-linux-x64.tar.gz -C /opt/
RUN tar -xvf apache-maven-3.3.9-bin.tar.gz  -C /opt/
ENV JAVA_HOME /opt/jdk1.8.0_161
ENV MAVEN_HOME /opt/apache-maven-3.3.9
ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
RUN yum install git -y
EXPOSE 22 
ENTRYPOINT ["/usr/local/sbin/run.sh"] 
CMD ["/bin/bash"]

6.制作镜像

   镜像名称:slave-java8,镜像tag:1.0(默认 latest)

$ docker build -t slave-java8:1.0 .

执行效果:
    ....
    Successfully built 镜像ID
#将宿主机的5555端口映射到容器的22端口,并启动sshd服务。 
$ docker run -d -p 5555:22 slave-java8:1.0 
#进入容器(建议不使用attach命令进入容器)
$ docker exec -it 容器ID /bin/bash 

7.结语
   本文基本讲解了利用Dockerfile创建java环境的步骤,当然其中还是存在问题,例如这样生成的镜像,maven仓库地址并没有修改,因此maven构建项目挺慢的,可以利用本地maven包进行镜像build,获取动态挂载配置都是可以的。gitlab地址:https://gitlab.com/wlcloudy/dockerfile-java.git

8.参考
   吃水不忘挖井人,本文参考:http://blog.51cto.com/changjianglinux/1866317

基于Docker的Hadoop平台搭建可以简化Hadoop集群的部署和管理。以下是基于CentOS 7的Docker镜像搭建Hadoop平台的步骤: ### 1. 准备工作 确保你已经安装了Docker。如果未安装,可以使用以下命令进行安装: ```bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker ``` ### 2. 创建Dockerfile 创建一个目录用于存放Dockerfile和相关配置文件: ```bash mkdir hadoop-docker cd hadoop-docker ``` 在`hadoop-docker`目录中创建一个名为`Dockerfile`的文件,并添加以下内容: ```dockerfile FROM centos:7 # 安装必要的软件 RUN yum update -y wget java-1.8.0-openjdk-devel ssh rsync && \ yum clean all # 配置环境变量 ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk ENV HADOOP_HOME=/opt/hadoop ENV PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 下载和解压Hadoop RUN wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz && \ tar -xzvf hadoop-3.3.1.tar.gz && \ mv hadoop-3.3.1 /opt/hadoop # 配置SSH RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \ ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' && \ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 暴露端口 EXPOSE 22 9000 50070 8088 # 启动SSH和Hadoop CMD ["/usr/sbin/sshd", "-D"] ``` ### 3. 构建Docker镜像 在`hadoop-docker`目录下运行以下命令构建Docker镜像: ```bash docker build -t hadoop-centos:3.3.1 . ``` ### 4. 启动Hadoop容器 使用以下命令启动Hadoop容器: ```bash docker run -d -p 9000:9000 -p 50070:50070 -p 8088:8088 --name hadoop-container hadoop-centos:3.3.1 ``` ### 5. 配置Hadoop 进入容器并配置Hadoop: ```bash docker exec -it hadoop-container /bin/bash ``` 在容器内,编辑`$HADOOP_HOME/etc/hadoop/core-site.xml`和`$HADOOP_HOME/etc/hadoop/hdfs-site.xml`文件,添加必要的配置。 ### 6. 启动Hadoop服务 在容器内启动Hadoop服务: ```bash start-dfs.sh start-yarn.sh ``` ### 7. 验证Hadoop安装 通过浏览器访问`http://localhost:50070`查看NameNode状态,`http://localhost:8088`查看YARN资源管理状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨隐天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值