0

0

如何使用Docker构建Java的运行环境

WBOY

WBOY

发布时间:2023-04-24 22:40:11

|

2472人浏览过

|

来源于亿速云

转载

>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之类的传统虚拟化技术的区别:

如何使用Docker搭建Java的运行环境vs如何使用Docker搭建Java的运行环境

 >搭建docker环境

我使用的是ubuntu 14.04,在这上面安装docker服务。

快速安装docker

14.04版本的ubuntu仓库中已经支持docker的安装,
可以使用快速安装的方式,

sudo apt-get update
sudo apt-get install docker.io

启动服务和守护进程

service docker.io status
service docker.io start

这种方式安装通常不是docker的最新版本,

如果想要安装最新版本,可以去docker官网下载安装。

>创建第一个docker镜像

构建docker镜像的一般过程是首先创建一个容器,并在容器里修改镜像,配置相关环境等,最后将修改提交为一个新镜像。

(1)下载镜像文件

下载用于制作镜像的系统,

sudo docker pull index.alauda.cn/alauda/ubuntu

如何使用Docker搭建Java的运行环境
这里我从灵雀云的镜像中心拉取。

或者也可以直接从docker的镜像中心拉取,不过貌似非常慢:

sudo docker pull ubuntu

下载成功后,使用images命令查看本地的镜像列表:

docker images

如何使用Docker搭建Java的运行环境

这里需要注意,使用docker的时候请添加sudo。

默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,如果不跟 sudo,直接执行 docker 命令会报一些权限错误。

(2)启动容器并修改镜像

镜像下载到本地以后,就可以使用docker运行,

通过下面的命令参数启动容器,

docker run

-i:表示以“交互模式”运行容器

-t:表示容器启动后会进入其命令行

-v:表示需要将本地哪个目录挂载到容器中,

格式:-v :

我的相关程序都在当前机器的/data/software/目录下,并且想把它挂载到容器的相同目录下:

sudo docker run -i -t -v /data/software/:/data/software/ ae983d5e88ce /bin/bash

“镜像 id”,也可以使用“仓库名:标签名”,例如:index.alauda.cn/alauda/ubuntu :latest。

上面的命令,可以使用指定的镜像运行一个shell,如果想退出该终端,可以使用exit命令,或者依次按下ctrl -p+ctrl -q,即可切换到宿主机器。不过这种方式,容器依然在后天运行。

启动终端后,进入/data/software/目录,可以发现当前机器目录下的文件已经同步过来:如何使用Docker搭建Java的运行环境

(3)安装jdk和tomcat等

安装相关的jdk等程序,这里全部安装到/data/目录:

tar -zxvf jdk-7u25-linux-x64.tar.gz -c /data/
mv jdk1.7.0_25 jdk

unzip apache-tomcat-7.0.54.zip -d /data/
mv apache-tomcat-7.0.54 tomcat

配置环境变量

vi /etc/profile

添加下面的配置:

白月生产企业订单管理系统GBK2.0  Build 080807
白月生产企业订单管理系统GBK2.0 Build 080807

请注意以下说明:1、本程序允许任何人免费使用。2、本程序采用PHP+MYSQL架构编写。并且经过ZEND加密,所以运行环境需要有ZEND引擎支持。3、需要售后服务的,请与本作者联系,联系方式见下方。4、本程序还可以与您的网站想整合,可以实现用户在线服务功能,可以让客户管理自己的信息,可以查询自己的订单状况。以及返点信息等相关客户利益的信息。这个功能可提高客户的向心度。安装方法:1、解压本系统,放在

下载
#set java environment  
export java_home=/data/jdk  
export jre_home=${java_home}/jre  
export classpath=.:javahome/lib:javahome/lib:{jre_home}/lib  
export path=javahome/bin:javahome/bin:path 

export catalina_home=/data/tomcat 
export catalina_base=/data/tomcat

保存并退出,设置立即生效:

source /etc/profile

(4)编写启动脚本

启动tomcat时必须通过tomcathome/bin/catalina.sh实现,不能使用tomcathome/bin/catalina.sh实现,不能使用tomcat_home/bin/startup.sh启动,否则脚本执行后容器会马上退出。

vi /data/start.sh

添加以下内容:

#!/bin/bash
# export environment variable
source /etc/profile
# start tomcat
bash /data/tomcat/bin/catalina.sh run

添加可执行权限:chmod u+x /data/start.sh

(5)构建镜像

使用docker构建镜像的两种方法:

使用docker commit 命令,更直观一些;

使用docker build命令和dockerfile文件,可以模板化镜像构建过程;

这里使用docker commit的方式创建镜像。

查看容器列表:

sudo docker ps -a
container id image command created status ports names
39b2cf60a4c1 ae983d5e88ce:latest "/bin/bash" 5 hours ago exited (0) 9 seconds ago dreamy_euclid

提交一个新的镜像:

sudo docker commit 39b2cf60a4c1 bingyue/docdemo

如果有docker账号,可以将镜像推送到docker hub或资金的私有registry中。

现在查看本地的docker镜像,

sudo docker images

如何使用Docker搭建Java的运行环境

可以看到本地仓库已经有刚刚创建的docker镜像。

repository tag image id created virtual size
bingyue/docdemo latest bfc7ed316d42 about a minute ago 528.2 mb
index.alauda.cn/alauda/ubuntu latest ae983d5e88ce 10 months ago 255.1 mb

docker inspect可以查看新创建的镜像的详细信息:

sudo docker inspect bingyue/docdemo如何使用Docker搭建Java的运行环境

(6)运行新创建的镜像

docker run -d -p 18080:8080 --name docdemo bingyue/docdemo /data/start.sh

-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 18080 端口,

这样就向外界暴露了 18080 端口,可通过 docker 网桥来访问容器内部的 8080 端口了。

查看后台是否启动成功:

docker ps

测试访问:如何使用Docker搭建Java的运行环境

(7)提交至docker仓库

如果有docker仓库的账户,可以将本地创建的镜像提交至仓库。

 >使用体验

到这一步,差不多完成了docker的初体验,docker应用还是比较简单的,真正复杂的应该是背后的虚拟化技术。

一步一步部署下来,的确docker相比传统的虚拟机技术要简单了很多,有机会继续深入学习。

附:添加docker用户组,避免sudo输入

默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,影响效率。如果不跟 sudo,直接执行 docker images 命令会有如下问题:
get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. are you trying to connect to a tls-enabled daemon without tls?

把当前用户执行权限添加到相应的docker用户组里面就可以解决这个问题。

添加一个新的docker用户组

sudo groupadd docker

# 添加当前用户到docker用户组里

sudo gpasswd -a bingyue docker

# 重启docker后台监护进程

sudo service docker restart

# 重启之后,尝试一下,是否生效

docker version

#若还未生效,则系统重启,则生效

sudo reboot

docker常用命令

# 下载一个ubuntu镜像

sudo docker pull ubuntu

# 使用ubuntu运行一个交互性的shell

sudo docker run -i -t ubuntu /bin/bash

#docker ps命令

sudo docker ps #列出当前所有正在运行的container
sudo docker ps -l #列出最近一次启动的,且正在运行的container
sudo docker ps -a #列出所有的container

#port命令

docker run -p 80:8080   #映射容器的8080端口到宿主机的80端口

#删除容器命令

sudo docker rm `sudo docker ps -a -q`#删除所有容器
sudo docker rm $container_id#删除容器id为container_id的容器

#其他命令快速参考:

sudo docker images #查看本地镜像
sudo docker attach $container_id #启动一个已存在的docker实例
sudo docker stop $container_id #停止docker实例
sudo docker logs $container_id #查看docker实例运行日志,确保正常运行
sudo docker inspect $container_id #查看container的实例属性,比如ip等等

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

6

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

28

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

37

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

6

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

63

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

34

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

74

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

20

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

31

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 17.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号