Docker 构建Java Web应用
来源:互联网 发布:大数据采集软件 编辑:程序博客网 时间:2024/06/05 13:03
>Docker是干什么的
Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发,
源代码托管在 Github 上, 遵从Apache2.0协议开源。Docker的目标是实现轻量级的操作系统虚拟化解决方案。
学习Docker首先要了解几个概念:
镜像—Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息;
容器—容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,Docker运行在“Docker”上;
仓库—仓库是存放镜像的地方,有类似git的版本控制,同样分为公开仓库(Public)和私有仓库(Private)两种形式;
Docker支持大部分的Linux发行版,通过使用Docker容器,就可以在不同的操作系统,
不同的机器上运行自己的应用,不用关心硬件、运行环境之类的配置,应用程序的迁移变得非常简单。
>Docker和传统虚拟化技术的对比
相比传统虚拟机技术,Docker资源占用少,启动更快,很大的方便了项目的部署和运维。
Docker是在操作系统层面上实现虚拟化,复用本地主机的操作系统,传统方式是在硬件的基础上,虚拟出多个操作系统,然后在系统上部署相关的应用。
下面的这张图片参考相关博文,很形象的说明了Docker和VM之类的传统虚拟化技术的区别:
vs
建议使用64位Linux系统(版本不限),Linux内核版本不低于3.8,如果宿主机不支持硬件虚拟化,就将64位Linux系统安装在宿主机上,与Windows系统构成双系统模式。(32位Linux系统在进行docker实验时会走很多弯路)
1.安装Docker
root@chao-ThinkPad-Edge-E430:~# apt-get update Hit http://archive.ubuntukylin.com:10006 xenial InReleaseHit http://archive.ubuntukylin.com:10006 xenial/main amd64 Packages Hit http://archive.ubuntukylin.com:10006 xenial/main i386 Packages Hit http://archive.ubuntukylin.com:10006 xenial/main Translation-en Ign http://cn.archive.ubuntu.com trusty InRelease Get:1 http://cn.archive.ubuntu.com trusty-updates InRelease [65.9 kB] Hit http://cn.archive.ubuntu.com trusty-backports InRelease Hit http://cn.archive.ubuntu.com trusty Release.gpg Get:2 http://cn.archive.ubuntu.com trusty-updates/main Sources [395 kB]Hit http://security.ubuntu.com trusty-security InRelease Ign http://extras.ubuntu.com trusty InRelease Get:3 http://cn.archive.ubuntu.com trusty-updates/restricted Sources [6,327 B] Get:4 http://cn.archive.ubuntu.com trusty-updates/universe Sources [177 kB] Get:5 http://cn.archive.ubuntu.com trusty-updates/multiverse Sources [7,759 B] Get:6 http://cn.archive.ubuntu.com trusty-updates/main amd64 Packages [973 kB] Get:7 http://extras.ubuntu.com trusty Release.gpg [72 B] Hit http://extras.ubuntu.com trusty Release Hit http://security.ubuntu.com trusty-security/main Sources Get:8 http://cn.archive.ubuntu.com trusty-updates/restricted amd64 Packages [17.1 kB]Hit http://extras.ubuntu.com trusty/main Sources Hit http://security.ubuntu.com trusty-security/restricted Sources Get:9 http://cn.archive.ubuntu.com trusty-updates/universe amd64 Packages [403 kB]Hit http://security.ubuntu.com trusty-security/universe Sources Hit http://extras.ubuntu.com trusty/main amd64 Packages Get:10 http://cn.archive.ubuntu.com trusty-updates/multiverse amd64 Packages [14.3 kB]Get:11 http://cn.archive.ubuntu.com trusty-updates/main i386 Packages [932 kB] Hit http://security.ubuntu.com trusty-security/multiverse Sources Hit http://extras.ubuntu.com trusty/main i386 Packages Hit http://security.ubuntu.com trusty-security/main amd64 Packages Hit http://security.ubuntu.com trusty-security/restricted amd64 Packages Get:12 http://cn.archive.ubuntu.com trusty-updates/restricted i386 Packages [16.9 kB]Hit http://security.ubuntu.com trusty-security/universe amd64 Packages Get:13 http://cn.archive.ubuntu.com trusty-updates/universe i386 Packages [405 kB]Hit http://security.ubuntu.com trusty-security/multiverse amd64 Packages Get:14 http://cn.archive.ubuntu.com trusty-updates/multiverse i386 Packages [14.6 kB]Hit http://cn.archive.ubuntu.com trusty-updates/main Translation-en Hit http://cn.archive.ubuntu.com trusty-updates/multiverse Translation-en Hit http://security.ubuntu.com trusty-security/main i386 Packages Hit http://cn.archive.ubuntu.com trusty-updates/restricted Translation-en Hit http://cn.archive.ubuntu.com trusty-updates/universe Translation-en Hit http://cn.archive.ubuntu.com trusty-backports/main Sources Hit http://cn.archive.ubuntu.com trusty-backports/restricted Sources Hit http://cn.archive.ubuntu.com trusty-backports/universe Sources Hit http://cn.archive.ubuntu.com trusty-backports/multiverse Sources Hit http://cn.archive.ubuntu.com trusty-backports/main amd64 Packages Hit http://cn.archive.ubuntu.com trusty-backports/restricted amd64 Packages Hit http://security.ubuntu.com trusty-security/restricted i386 PackagesHit http://cn.archive.ubuntu.com trusty-backports/universe amd64 Packages Hit http://cn.archive.ubuntu.com trusty-backports/multiverse amd64 Packages Hit http://cn.archive.ubuntu.com trusty-backports/main i386 Packages Hit http://cn.archive.ubuntu.com trusty-backports/restricted i386 Packages Hit http://cn.archive.ubuntu.com trusty-backports/universe i386 Packages Hit http://cn.archive.ubuntu.com trusty-backports/multiverse i386 Packages Hit http://cn.archive.ubuntu.com trusty-backports/main Translation-en Hit http://cn.archive.ubuntu.com trusty-backports/multiverse Translation-enHit http://cn.archive.ubuntu.com trusty-backports/restricted Translation-en Hit http://security.ubuntu.com trusty-security/universe i386 Packages Hit http://cn.archive.ubuntu.com trusty-backports/universe Translation-en Hit http://cn.archive.ubuntu.com trusty Release Hit http://cn.archive.ubuntu.com trusty/main Sources Hit http://cn.archive.ubuntu.com trusty/restricted Sources Hit http://cn.archive.ubuntu.com trusty/universe Sources Hit http://cn.archive.ubuntu.com trusty/multiverse Sources Hit http://security.ubuntu.com trusty-security/multiverse i386 PackagesHit http://cn.archive.ubuntu.com trusty/main amd64 Packages Hit http://cn.archive.ubuntu.com trusty/restricted amd64 Packages Hit http://cn.archive.ubuntu.com trusty/universe amd64 Packages Hit http://cn.archive.ubuntu.com trusty/multiverse amd64 Packages Hit http://cn.archive.ubuntu.com trusty/main i386 Packages Hit http://cn.archive.ubuntu.com trusty/restricted i386 Packages Hit http://cn.archive.ubuntu.com trusty/universe i386 Packages Hit http://cn.archive.ubuntu.com trusty/multiverse i386 Packages Hit http://cn.archive.ubuntu.com trusty/main Translation-en Hit http://security.ubuntu.com trusty-security/main Translation-en Hit http://cn.archive.ubuntu.com trusty/multiverse Translation-en Hit http://cn.archive.ubuntu.com trusty/restricted Translation-en Hit http://cn.archive.ubuntu.com trusty/universe Translation-en Hit http://security.ubuntu.com trusty-security/multiverse Translation-enHit http://security.ubuntu.com trusty-security/restricted Translation-en Ign http://cn.archive.ubuntu.com trusty/main Translation-en_US Ign http://cn.archive.ubuntu.com trusty/multiverse Translation-en_USIgn http://cn.archive.ubuntu.com trusty/restricted Translation-en_USIgn http://cn.archive.ubuntu.com trusty/universe Translation-en_US Hit http://security.ubuntu.com trusty-security/universe Translation-en Ign http://extras.ubuntu.com trusty/main Translation-en_US Ign http://extras.ubuntu.com trusty/main Translation-en Fetched 3,427 kB in 15s (225 kB/s) Reading package lists... Doneroot@chao-ThinkPad-Edge-E430:~# apt-get install docker.io
2.从Docker Hub上拉取一个Ubuntu镜像
root@chao-ThinkPad-Edge-E430:~# docker pull ubuntulatest: Pulling from ubuntuf0ea6429bcad: Downloading 457.9 kB/45.56 MBfda5504ec872: Download complete 8070fdcb4dff: Download complete 311afb88d041: Download complete 0ea0322ce8a6: Download complete 24c85647b066: Download complete
3.查看镜像并启动容器
root@chao-ThinkPad-Edge-E430:~# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEubuntu latest 24c85647b066 5 days ago 117.2 MBroot@chao-ThinkPad-Edge-E430:~# docker run -i -t ubuntu /bin/bash
4.退出容器,安装JDK和Tomcat等
root@chao-ThinkPad-Edge-E430:~# cd /usr/java/root@chao-ThinkPad-Edge-E430:/usr/java# lsjdk1.8.0_121 jdk-8u121-linux-x64.tar.gz tomcatroot@chao-ThinkPad-Edge-E430:/usr/java# cd tomcat/root@chao-ThinkPad-Edge-E430:/usr/java/tomcat# lsapache-tomcat-6.0.53 apache-tomcat-6.0.53.tar.gzroot@chao-ThinkPad-Edge-E430:/usr/java/tomcat#
5.配置环境
配置环境变量
vi /etc/profile
添加下面的配置:
#set jdk environment export JAVA_HOME=/usr/java export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH #set tomcat environment export CATALINA_HOME=/usr/java/tomcat/apache-tomcat-6.0.53 export CATALINA_BASE=/usr/java/tomcat/apache-tomcat-6.0.53
保存并退出,设置立即生效:
source /etc/profile
6.编写启动脚本启动tomcat时必须通过TOMCATHOME/bin/catalina.sh实现,不能使用TOMCAT_HOME/bin/startup.sh启动,否则脚本执行后容器会马上退出。
gedit /usr/start.sh
添加以下内容:
#!/bin/bash# Export environment variablesource /etc/profile# Start tomcatbash /usr/java/tomcat/apache-tomcat-6.0.53/bin run
添加可执行权限:
root@chao-ThinkPad-Edge-E430:~# chmod u+x /usr/start.sh
7.构建镜像
查看容器列表
root@chao-ThinkPad-Edge-E430:~# docker ps -a|moreCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES9d5acbf14c4b ubuntu:latest "/bin/bash" 21 minutes ago Exited (0) 16 minutes ago hopeful_mccarthy
提交一个新镜像
root@chao-ThinkPad-Edge-E430:~# docker commit 9d5acbf14c4b liuchao/javaweb:0.173e5ff13ed1d996bdf54afe692d6d63d06c9003fd58383072b7993d31e596f3d
查看本地Docker 镜像
root@chao-ThinkPad-Edge-E430:~# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEliuchao/javaweb 0.1 73e5ff13ed1d About a minute ago 117.2 MBubuntu latest 24c85647b066 5 days ago 117.2 MB
8.运行新创建的镜像
- Docker 构建Java Web应用
- docker java web应用
- Docker 构建JAVA 应用环境
- 使用docker 构建一个web应用
- docker构建Java Web + Mysql运行环境
- eclipse+java 构建web应用
- Docker构建tomcat镜像并发布web应用
- Docker使用之Java web应用部署
- 从零开始使用Docker构建Java Web开发运行环境
- Docker 构建 Java Web 开发环境(一)
- 从零开始使用Docker构建Java Web开发运行环境
- Docker学习(4)构建Apache+Jekyll服务和Java应用
- 用 Docker 构建 Serverless 应用
- docker dockerfile构建tomcat应用
- docker部署web应用
- Docker部署web应用
- docker部署web应用
- Java Web基础:第五讲 手动构建Web应用
- Java异常体系结构
- 自动化运维 | 如何实现服务器宕机后自动重启
- Spring Boot——缓存支持2(Redis)
- 价值万元,分享给大家
- XCode 8.3.1 打包ipa 解决不能收到推送消息问题
- Docker 构建Java Web应用
- TCP四种定时器
- 编程中最没用的东西是源代码,最有用的东西是算法和数据结构
- leetcode 476. Number Complement
- 如何用JS控制复选框选中,element.checked
- 使用altshift-taps实现sobel算法
- JAVA中的System类常用方法
- POJ3258 River Hopscotch(最大化最小值/二分法)
- Linux下的进程控制块task_struct结构体