ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Docker使用(利用Dockerfile构建一个centos的系统,并配置Java环境,超详细)

2020-02-23 13:38:57  阅读:422  来源: 互联网

标签:Java centos dhb etc conf HOME 镜像 Docker docker


除了从Docker公共仓库中找镜像,我们还可以自己制作一个镜像,并且定制化符合自己的镜像,使用Dockerfile构建

注意:Dockerfile的书写规则其实也不复杂,但是我觉得,如果你不是专业的运维人员,没必要去书写,了解一下即可,是因为,你会发现,就算你写完了Dockerfile构建出来的镜像虽然能用,但是不是一个完整的Linux系统,好多地方都要从头开始配置系统,否则就是一个几百M的壳子而已。

那怎么办呢?直接用现成的呗,省时又省力,推荐去网易云镜像中心,里面很多Linux系统(centos,ubuntu)的Dockerfile都拿来即用的,很方便,而且是一个完整的系统,都已经帮你初始化好了。

以下例子来源于网易云镜像中心的Dockerfile

=======================================================================================
网易云163镜像中心(https://c.163yun.com/hub#/home)
centos 的Dockerfile示例
该镜像主要包括:
yum 源更换为网易源,
并安装了常用软件: openssh-server、supervisor、vim、tar、wget、curl、rsync、bzip2、iptables、tcpdump、less、telnet、net-tools、lsof、sysstat、cron
开箱即用
=======================================================================================
FROM hub.c.163.com/public/centos:7.2.1511
RUN yum clean all
RUN yum install -y yum-plugin-ovl || true
RUN yum install -y vim tar wget curl rsync bzip2 iptables tcpdump less telnet net-tools lsof sysstat cronie python-setuptools
RUN yum clean all
RUN easy_install supervisor
RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 22
RUN mkdir -p /etc/supervisor/conf.d/
RUN /usr/bin/echo_supervisord_conf > /etc/supervisord.conf
RUN echo [include] >> /etc/supervisord.conf
RUN echo 'files = /etc/supervisor/conf.d/*.conf' >> /etc/supervisord.conf
COPY sshd.conf /etc/supervisor/conf.d/sshd.conf
CMD ["/usr/bin/supervisord"]
========================================================================================

下面以Mac为例,详细说明

1.启动Docker For Mac 客户端
2.在客户端的偏好设置(Command+,)里->Docker Engine里配置阿里云的镜像加速器(地址为https://8rwmp8tx.mirror.aliyuncs.com)或着(https://dashboard.daocloud.io/runtime-apps这个地址是DaoCloud 提供Docker Hub Mirror服务的地址,进入这个里面,右上方有一个灰色的加速器,点击进去会有地址http://f1361db2.m.daocloud.io,这个地址也可以,这个地址不光pull速度快,push的速度也快),加快镜像的拉取速度,这里基于Dockerfile,不去在线拉取。
3.在 当前用户目录/dockerFiles/usingDockerFile 下创建一个 Dockerfile的文件,前面的地址可以自定义哈
4.登录网易云镜像中心(地址),找到centos,选择一个版本的Dockerfile 复制粘贴
5.docker build -t docker-whale . 执行命令,不要忘了最后那个 .  开始构建镜像
7.docker run -it --name 163centos(容器名字) 镜像ID /bin/bash, 进入容器
8.group root,查看当前root用户的用户组

开始配置用户
9.useradd -d /home/dhb  -m dhb(-d 用户所在的目录,-m 代表不存在则创建,dhb 代表用户名)
10.groupadd -g 414 guest,创建用户组ID为414的用户组 guest
11.usermod -g guest -G root dhb(-g 主用户组,-G 附加组名字,dhb 代表用户名) 将用户dhb添加到用户组guest、root下
12.passwd dhb,给dhb用户设置密码123456(此密码也是root的密码)
13.rpm -qa | grep java,查看系统里是否已经预装了JDK8,一般是没有的,-qa是查询所有

下面开始配置环境

配置JDK
14.yum search jdk,查找jdk
15.yum install java-1.8.0-openjdk.x86_64,安装jdk8
16.java -versoin,等待安装完毕之后查看是否安装成功,/usr/lib/jvm 是默认安装目录
17.vim /etc/profile,设置环境变量
18.在profile最后插入

#set java environment
JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH


19. source /etc/profile,使文件立刻生效

配置maven
20.yum -y install maven,安装maven
21.vim /etc/maven/settings.xml->:set nu(显示行号)->/ <url(从上往下查找<url这个字符串)->:156(跳转到156行,这里是<url字符串所在的位置)->i(插入模式)->替换为阿里的仓库(https://maven.aliyun.com/repository/public)->:wq->source /etc/profile
22.vim /etc/profile->G(跳转到文件末尾,gg是跳转到文件开始)->在最后插入

export M2_HOME=/usr/share/maven

(如果不知道maven的安装路径,使用 whereis maven查看,不要使用which maven,这个查看应用的执行路径)

export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin


->:wq->source /etc/profile(使文件马上生效),小提示(vim 中快速跳转到行尾-$,快速跳转到行首是-0)

在配置好的容器里运行一个Java程序
23.docker cp ${projectPath}/mathml-0.0.1-SNAPSHOT.jar(宿主机文件路径,前面的projectPath根据实际情况来) c84a9fdd2560(容器ID):/home/dhb/project(容器内的路径),可以进入容器目录启动jar包,试一下是否可以正常启动,java -jar ${projectPath}/mathml-0.0.1-SNAPSHOT.jar
24.exit(退出容器)->docker rm containerId(如果不需要了,删除容器)
25.docker commit -a(作者) "dhb" -m(提交信息) "163mavenos" containerId standardos(新生成的镜像名字):latest(版本)
26.docker tag standardos jacksparrow414(docker hub的账户名字)/standardos(仓库名字)
27.docker push jacksparrow414/standardos(推送到远程)
28.推送成功之后可以在Docker Hub的个人仓库那里找到,可以复制对应的pull命令
29.docker rmi image,删除本地镜像(先要把关联的容器删除掉,命令在24行的第二段)
30.docker pull jacksparrow414/standardos,重新拉取镜像
31.docker run -it --name os1(容器名字) --network(使用自定义bridge,不使用默认的) dhb-net(自定义bridge的名字) jacksparrow414/standardos:latest,测试拉下来的镜像是不是能用的,测试OK

至于为什么使用--network,后面的文章会说。

至此,对于Docker的基本操作都介绍完了,至于容器里面的东西,和Linux系统没什么两样,你可以随便玩耍了。

最后附上一张镜像大小的图,是1.14G,这才是真正的Centos系统

信息图

JackSparrow414 发布了71 篇原创文章 · 获赞 11 · 访问量 3万+ 私信 关注

标签:Java,centos,dhb,etc,conf,HOME,镜像,Docker,docker
来源: https://blog.csdn.net/dghkgjlh/article/details/104458459

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有