展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 如何使用Docker搭建Java的运行环境

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

Docker Desktop macOS版
Docker Desktop macOS版

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Mac 2026-10-13
数据库 编程开发 Desktop 开发工具 服务器管理
立即下载

>docker是干什么的docker是一个基于linux容器(lxc-linuxcontainer)的高级容器引擎,基于go语言开发,源代码托管在github上,遵从apache2.0协议开源。docker的目标是实现轻量级的操作系统虚拟化解决方案。学习docker首先要了解几个概念:镜像—docker的镜像和常见的系统iso镜像类似,包含了应用程序的信息;容器—容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,docker运行在“docker”上;仓库—仓库是存放镜像的地方,有类似git的版本控

本文目录

    >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 <相关参数> <镜像 id> <初始命令>

    -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

    添加下面的配置:

    #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等等
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Docker Java
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?