「docker实战java」Docker实战第2版
本篇文章给大家谈谈docker实战java,以及Docker实战第2版对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
如何使用Docker 进行Java 开发
docker只是个容器而已,况且还是虚拟的。
你可以开发好项目部署上去,最好不要用来开发。
如何使用 Java 和 Docker 构建微服务
当想让一个容器做两件事情,或者使一个Docker镜像包含来自两个不同镜像的依赖库时,就需要知道每个镜像的Dockerfile。本文介绍了如何通过docker history命令来对Docker镜像进行反向工程,得到它们的Dockerfile,并组织到一个Dockerfile里然后bui...
云计算需要学习哪些课程?
1云计算的学习内容是什么?本专业主要课程有:Linux操作系统应用、虚拟化技术、Java程序设计、OpenStack系统应用、Hadoop分布式应用、数据存储技术、云平台管理系统、云数据中心构建与运维、云存储产品配置与应用、大数据平台和大数据分析、云安全产品配置与应用等。可从事的工作岗位:1.云平台管理、服务架设、数据安全维护、性能优化的云平台运维工程师;2.基于云应用类软件产品的开发、测试、部署、维护等的云服务应用/开发工程师;3.推广销售云计算管理平台和服务器虚拟化软件及云应用软件系统的产品销售工程师;4.处理客户的技术咨询,解决常见产品技术问题的技术客服;5.为企业或政府搭建云计算管理平台,确保私有云平台顺利上线运行的云平台实施工程师。2云计算前景如何?任何一个行业的存在都需要根据市场的形式。从现代的网络使用来看,市场的形式一片光明。而云计算由于技术更先进,而且在众多内容的摄入上更多,因此在实际的使用中其实更能满足现代的需要。这个云计算能够为很多行业提供服务,即便是我们个人在使用网络的时候也同样需要云计算来辅助。当然云计算能够为各行各业的使用带来适合的形式,因此云计算所概括的行业更多,从前景也更广阔。
如何通过java来操作docker镜像
利用Dockerfile构建一个简单的java应用镜像,依赖环境比较简单,JDK,定制化的Tomcat(名为star-appserver)
1、环境准备
ubuntu:14.04
docker : 1.4
jdk:jdk-8u31-linux-x64.gz
tomcat : 7.0(star-appserver)
在/usr/local下创建目录:sms,将jdk-8u31-linux-x64.gz和star-appserver(此处为了简单,已包含应用)拷贝到此目录下,由于Docker在构建镜像时,需将Dockerfile所在目录传给Docker daemon作为构建上下文,所以此目录下应包含构建时所依赖的各种环境。
2、环境准备好后,在sms下创建Dockerfile(名字必须为Dockerfile)文件,内容如下
FROM ubuntu:latest
MAINTAINER zhangjy
#install JDK and TOMCAT
ADD jdk-8u31-linux-x64.gz /usr/local/
ADD tomcat /usr/local/ #tomcat下为star-appserver,如果直接复制star-appserver,只会复制目录里边的内容,不会复制目录本身
ADD timezone /etc/
#启动脚本,用于从镜像启动容器时调用执行,见下面的ENTRYPOINT
ADD onStart.sh /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_31 CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin
RUN echo "JAVA_HOME=/usr/local/jdk1.8.0_31\nCALSSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar\nPATH=$PATH:$JAVA_HOME/bin" /etc/profile
#start tomcat
ENTRYPOINT ["/usr/local/onStart.sh"]
3、在sms下创建onStart.sh,并赋予执行权限,用于启动tomcat并输出日志(为了保证容器中有执行状态的进程,否则容器停止)
#!/bin/bash
/usr/local/star-appserver/bin/startup.sh
tail -f /usr/local/star-appserver/logs/stariboss.log
4、在sms下执行命令,创建成功
$docker build -t zhangjy/starsms:v1 .
启动时,发现应用访问数据库报错:ORA-01882: timezone region not found,原因是JVM默认使用Ubuntu的/etc/timezone里配置的时区,查看timezone时区为Etc/UTC,再查看ORACLE数据库支持的时区:select * from V$TIMEZONE_NAMES发现没有,于是又在sms目录下创建了一个timezone文件,将时区配置成Asia/Shanghai,在Dockerfile中加入到镜像/etc/目录下
Dockerfile文件配置说明:
FROM
表明基于哪个镜像创建
MAINTAINER
作者和邮箱
ADD
将目录或文件加入到镜像的某个目录,格式是ADD 源文件 目标目录
RUN
有两种格式:
RUN command (the command is run in a shell - /bin/sh -c - shell form)
RUN ["executable", "param1", "param2"] (exec form)
默认RUN后的命令是在/bin/sh下执行,像Ubuntu默认/bin/sh是指向/bin/dash,如果想使用/bin/bash,则可按如下方式
RUN ["/bin/bash","-c","source /etc/profile"]
但需注意,这种方式不能解析类似于$HOME的参数引用
ENV
设置环境变量,在镜像构建过程中和容器启动后均有效
CMD
CMD在容器运行的时候提供一些命令及参数,用法如下:
CMD ["executable","param1","param2"] (exec form, this is the preferred form) CMD ["param1","param2"] (as default parameters to ENTRYPOINT) CMD command param1 param2 (shell form)
- 第一种用法:运行一个可执行的文件并提供参数。
- 第二种用法:为ENTRYPOINT指定参数,即为ENTRYPOINT指定命令的默认参数,通过docker run命令传过来的参数会将其覆盖
- 第三种用法(shell form):是以”/bin/sh -c”的方法执行的命令。
如指定:
1. CMD [“/bin/echo”, “this is a echo test ”]
build后运行(假设镜像名为ec):
1. docker run ec
就会输出: this is a echo test
注意:如果在docker run命令后指定命令,如docker run ec echo 'test',会将CMD的命令覆盖。CMD的命令不能接收run传过来的参数,而ENTRYPOINT可以
ENTRYPOINT
有两种用法
ENTRYPOINT ["executable", "param1", "param2"] (the preferred exec form)
ENTRYPOINT command param1 param2 (shell form)
第一种可以接收docker run命令传过来的参数(即使docker run传过来的是命令,也会被当做参数处理),如果想覆盖,可使用docker run ... --entrypoint COMMAND
docker实战java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Docker实战第2版、docker实战java的信息别忘了在本站进行查找喔。
发布于:2022-11-24,除非注明,否则均为
原创文章,转载请注明出处。