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.运行新创建的镜像


 


0 0
原创粉丝点击