千家信息网

Docker怎么构建JAVA环境镜像

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"Docker怎么构建JAVA环境镜像",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Docker怎么构建JAVA环境镜像"吧!1\
千家信息网最后更新 2025年12月02日Docker怎么构建JAVA环境镜像

这篇文章主要讲解了"Docker怎么构建JAVA环境镜像",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Docker怎么构建JAVA环境镜像"吧!

1\ 需要提前下载软件包jdk和tomcat

[root@docker-master ~]# vim Dockerfile-JavaFROM centos:6MAINTAINER gujiworkADD jdk-8u151-linux-x64.tar.gz /usr/localENV JAVA_HOME /usr/local/jdk1.8.0_151ADD apache-tomcat-7.0.82.tar.gz /usr/localWORKDIR /usr/local/apache-tomcat-7.0.82ENTRYPOINT ["bin/catalina.sh","run"]#暴露8080端口EXPOSE 8080

2\执行build之后便开始构建成镜像

[root@docker-master ~]# docker build -t tomcat:v1 -f ./Dockerfile-Java  .Sending build context to Docker daemon  3.045GBStep 1/8 : FROM centos:66: Pulling from library/centos9bfcefca2b8d: Pull completeDigest: sha256:573923afbed3faf8000ad6eb333ebeb1d46e753d3ae23a6f59b528c7e1531747Status: Downloaded newer image for centos:6 ---> 0cbf37812bffStep 2/8 : MAINTAINER gujiwork ---> Running in 2205a6b1c70d ---> 807741f8ef42Removing intermediate container 2205a6b1c70dStep 3/8 : ADD jdk-8u151-linux-x64.tar.gz /usr/local ---> 617e8b4fa97dStep 4/8 : ENV JAVA_HOME /usr/local/jdk1.8.0_151 ---> Running in deded76bd1f4 ---> bfe5b16b5dfbRemoving intermediate container deded76bd1f4Step 5/8 : ADD apache-tomcat-7.0.82.tar.gz /usr/local ---> ad01015a58f5Step 6/8 : WORKDIR /usr/local/tomcat ---> 70c90ddeb127Removing intermediate container 385c8cafef5bStep 7/8 : ENTRYPOINT bin/catalina.sh run ---> Running in fb186dfb8068 ---> 0c9299e34658Removing intermediate container fb186dfb8068Step 8/8 : EXPOSE 8080 ---> Running in 44161cdc051b ---> b0ca287e65baRemoving intermediate container 44161cdc051bSuccessfully built b0ca287e65baSuccessfully tagged tomcat:v1

3\可通过docker images查看构建的镜像

[root@docker-master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEtomcat              v1                  b0ca287e65ba        2 minutes ago       592MBnginx               latest              568c4670fa80        2 weeks ago         109MBcentos              6                   0cbf37812bff        2 months ago        194MBcentos              latest              3fa822599e10        12 months ago       204MB

4\ 启动docker tomcat容器,使用宿主机IP访问页面进行测试.

[root@docker-master ~]# docker run -itd --name web01 -p 80:8080 tomcat:v12c4d214c8ce9aef03409d7e02a43ed10247480de22c3b9d9c31b4e8d73eca45f[root@docker-master ~]# docker psCONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS                  NAMES2c4d214c8ce9        tomcat:v1           "bin/catalina.sh run"   29 seconds ago      Up 27 seconds       0.0.0.0:80->8080/tcp   web01# 查看本机网卡IP地址[root@docker-master ~]# ifconfig  ens33ens33: flags=4163  mtu 1500        inet 172.18.18.10  netmask 255.255.255.0  broadcast 172.18.18.255        inet6 fe80::20c:29ff:fe80:de01  prefixlen 64  scopeid 0x20        ether 00:0c:29:80:de:01  txqueuelen 1000  (Ethernet)        RX packets 55747  bytes 72954144 (69.5 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 30192  bytes 2373785 (2.2 MiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

5\配置开启SSH远程登录,方便测试及开发进行相关的排错查看

[root@docker-master ~]# vim Dockerfile-Java-sshFROM centos:6MAINTAINER gujiworkENV JAVA_HOME /usr/local/jdk1.8.0_151ENV ROOT_PASSWORD 123456ADD jdk-8u151-linux-x64.tar.gz /usr/localADD apache-tomcat-7.0.82.tar.gz /usr/localCOPY ./start.sh /usr/local/start.shRUN yum install -y openssh-server && \    echo $ROOT_PASSWORD |passwd --stdin root && \    ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key && \    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key && \    echo 'UseDNS no' >> /etc/ssh/sshd_config && \    sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd && \    chmod +x /usr/local/start.sh && \    rm -rf /usr/local/apache-tomcat-7.0.82.tar.gzWORKDIR /usr/local/apache-tomcat-7.0.82ENTRYPOINT ["/usr/local/start.sh","run"]#暴露8080和22端口EXPOSE 8080EXPOSE 22

6\start.sh脚本,用于启动容器内的多个服务

[root@docker-master ~]# vim start.sh#!/bin/bashTomcatDir="/usr/local/apache-tomcat-7.0.82"cd $TomcatDir ; ./bin/startup.sh/usr/sbin/sshd -Dtail -f /var/log/*

7\重新构建镜像,tag标记为tomcat:v2

[root@docker-master ~]# docker build -t tomcat:v2 -f Dockerfile-Java-ssh .Sending build context to Docker daemon  3.045GBStep 1/15 : FROM centos:6 ---> 0cbf37812bffStep 2/15 : MAINTAINER gujiwork ---> Using cache ---> 807741f8ef42Step 3/15 : ENV ROOT_PASSWORD 123456 ---> Running in b01f3ce7ae37 ---> 47ec926ccf9cRemoving intermediate container b01f3ce7ae37Step 4/15 : ADD jdk-8u151-linux-x64.tar.gz /usr/local ---> 33bb1bfe21ceStep 5/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_151 ---> Running in 53d4f20f8a3e ---> 4589c805fe03Removing intermediate container 53d4f20f8a3eStep 6/15 : ADD apache-tomcat-7.0.82.tar.gz /usr/local ---> 2b9b81efe22cStep 7/15 : WORKDIR /usr/local/apache-tomcat-7.0.82 ---> 4e0132cba433Removing intermediate container d3629c03c293Step 8/15 : ENTRYPOINT bin/catalina.sh run ---> Running in 3149b8be9f3e ---> 4a0d49525705Removing intermediate container 3149b8be9f3eStep 9/15 : RUN yum install -y openssh-server ---> Running in 54d1c22da719Loaded plugins: fastestmirror, ovlSetting up Install Processhttp://mirrors.njupt.edu.cn/centos/6.10/updates/x86_64/repodata/e38a3ccfa43be7ce9c19045799166dc3424cba6ca0f49b19d4c1b48707e7597f-primary.sqlite.bz2: [Errno 14] PYCURL ERROR 7 - "couldn't connect tohost"Trying other mirror.Resolving Dependencies--> Running transaction check---> Package openssh-server.x86_64 0:5.3p1-123.el6_9 will be installed--> Processing Dependency: openssh = 5.3p1-123.el6_9 for package: openssh-server-5.3p1-123.el6_9.x86_64--> Processing Dependency: /sbin/service for package: openssh-server-5.3p1-123.el6_9.x86_64--> Processing Dependency: libwrap.so.0()(64bit) for package: openssh-server-5.3p1-123.el6_9.x86_64--> Processing Dependency: libfipscheck.so.1()(64bit) for package: openssh-server-5.3p1-123.el6_9.x86_64--> Running transaction check---> Package fipscheck-lib.x86_64 0:1.2.0-7.el6 will be installed--> Processing Dependency: /usr/bin/fipscheck for package: fipscheck-lib-1.2.0-7.el6.x86_64---> Package initscripts.x86_64 0:9.03.61-1.el6.centos will be installed--> Processing Dependency: util-linux-ng >= 2.16 for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: upstart >= 0.6.5-11 for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: udev >= 125-1 for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: sysvinit-tools >= 2.87-6 for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: plymouth for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: /sbin/pidof for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: /sbin/ip for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: /sbin/blkid for package: initscripts-9.03.61-1.el6.centos.x86_64--> Processing Dependency: /sbin/arping for package: initscripts-9.03.61-1.el6.centos.x86_64---> Package openssh.x86_64 0:5.3p1-123.el6_9 will be installed---> Package tcp_wrappers-libs.x86_64 0:7.6-58.el6 will be installed--> Running transaction check---> Package fipscheck.x86_64 0:1.2.0-7.el6 will be installed---> Package iproute.x86_64 0:2.6.32-57.el6 will be installed--> Processing Dependency: iptables >= 1.4.5 for package: iproute-2.6.32-57.el6.x86_64--> Processing Dependency: libxtables.so.4()(64bit) for package: iproute-2.6.32-57.el6.x86_64---> Package iputils.x86_64 0:20071127-24.el6 will be installed---> Package plymouth.x86_64 0:0.8.3-29.el6.centos will be installed--> Processing Dependency: system-logos for package: plymouth-0.8.3-29.el6.centos.x86_64--> Processing Dependency: libdrm_radeon.so.1()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64--> Processing Dependency: libdrm_nouveau.so.1()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64--> Processing Dependency: libdrm_intel.so.1()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64--> Processing Dependency: libdrm.so.2()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64---> Package sysvinit-tools.x86_64 0:2.87-6.dsf.el6 will be installed---> Package udev.x86_64 0:147-2.73.el6_8.2 will be installed--> Processing Dependency: hwdata for package: udev-147-2.73.el6_8.2.x86_64---> Package upstart.x86_64 0:0.6.5-17.el6 will be installed---> Package util-linux-ng.x86_64 0:2.17.2-12.28.el6_9.2 will be installed--> Running transaction check---> Package hwdata.noarch 0:0.233-20.1.el6 will be installed---> Package iptables.x86_64 0:1.4.7-19.el6 will be installed--> Processing Dependency: policycoreutils for package: iptables-1.4.7-19.el6.x86_64---> Package libdrm.x86_64 0:2.4.65-2.el6 will be installed--> Processing Dependency: libpciaccess.so.0()(64bit) for package: libdrm-2.4.65-2.el6.x86_64---> Package redhat-logos.noarch 0:60.0.14-12.el6.centos will be installed--> Running transaction check---> Package libpciaccess.x86_64 0:0.13.4-1.el6 will be installed---> Package policycoreutils.x86_64 0:2.0.83-30.1.el6_8 will be installed--> Processing Dependency: libdbus-glib-1.so.2()(64bit) for package: policycoreutils-2.0.83-30.1.el6_8.x86_64--> Running transaction check---> Package dbus-glib.x86_64 0:0.86-6.el6 will be installed--> Finished Dependency ResolutionDependencies Resolved================================================================================ Package                Arch        Version                     Repository                                                                           Size================================================================================Installing: openssh-server         x86_64      5.3p1-123.el6_9             base      329 kInstalling for dependencies: dbus-glib              x86_64      0.86-6.el6                  base      170 k fipscheck              x86_64      1.2.0-7.el6                 base       14 k fipscheck-lib          x86_64      1.2.0-7.el6                 base      8.3 k hwdata                 noarch      0.233-20.1.el6              base      1.4 M initscripts            x86_64      9.03.61-1.el6.centos        base      949 k iproute                x86_64      2.6.32-57.el6               base      386 k iptables               x86_64      1.4.7-19.el6                base      255 k iputils                x86_64      20071127-24.el6             base      121 k libdrm                 x86_64      2.4.65-2.el6                base      136 k libpciaccess           x86_64      0.13.4-1.el6                base       24 k openssh                x86_64      5.3p1-123.el6_9             base      277 k plymouth               x86_64      0.8.3-29.el6.centos         base       89 k policycoreutils        x86_64      2.0.83-30.1.el6_8           base      663 k redhat-logos           noarch      60.0.14-12.el6.centos       base       15 M sysvinit-tools         x86_64      2.87-6.dsf.el6              base       60 k tcp_wrappers-libs      x86_64      7.6-58.el6                  base       62 k udev                   x86_64      147-2.73.el6_8.2            base      358 k upstart                x86_64      0.6.5-17.el6                base      177 k util-linux-ng          x86_64      2.17.2-12.28.el6_9.2        base      1.6 MTransaction Summary================================================================================Install      20 Package(s)Total download size: 21 MInstalled size: 42 MDownloading Packages:--------------------------------------------------------------------------------Total                                           7.3 MB/s |  21 MB     00:02Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEYImporting GPG key 0xC105B9DE: Userid : CentOS-6 Key (CentOS 6 Official Signing Key)  Package: centos-release-6-10.el6.centos.12.3.x86_64 (@CentOS/6.10) From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction  Installing : sysvinit-tools-2.87-6.dsf.el6.x86_64                        1/20  Installing : hwdata-0.233-20.1.el6.noarch                                2/20  Installing : libpciaccess-0.13.4-1.el6.x86_64                            3/20  Installing : fipscheck-lib-1.2.0-7.el6.x86_64                            4/20  Installing : fipscheck-1.2.0-7.el6.x86_64                                5/20  Installing : dbus-glib-0.86-6.el6.x86_64                                 6/20  Installing : redhat-logos-60.0.14-12.el6.centos.noarch                   7/20  Installing : upstart-0.6.5-17.el6.x86_64                                 8/20  Installing : policycoreutils-2.0.83-30.1.el6_8.x86_64                    9/20  Installing : iptables-1.4.7-19.el6.x86_64                               10/20  Installing : iproute-2.6.32-57.el6.x86_64                               11/20  Installing : libdrm-2.4.65-2.el6.x86_64                                 12/20  Installing : iputils-20071127-24.el6.x86_64                             13/20  Installing : plymouth-0.8.3-29.el6.centos.x86_64                        14/20  Installing : util-linux-ng-2.17.2-12.28.el6_9.2.x86_64                  15/20install-info: No such file or directory for /usr/share/info/ipc.info  Installing : initscripts-9.03.61-1.el6.centos.x86_64                    16/20  Installing : udev-147-2.73.el6_8.2.x86_64                               17/20  Installing : openssh-5.3p1-123.el6_9.x86_64                             18/20  Installing : tcp_wrappers-libs-7.6-58.el6.x86_64                        19/20  Installing : openssh-server-5.3p1-123.el6_9.x86_64                      20/20  Verifying  : plymouth-0.8.3-29.el6.centos.x86_64                         1/20  Verifying  : tcp_wrappers-libs-7.6-58.el6.x86_64                         2/20  Verifying  : policycoreutils-2.0.83-30.1.el6_8.x86_64                    3/20  Verifying  : fipscheck-1.2.0-7.el6.x86_64                                4/20  Verifying  : upstart-0.6.5-17.el6.x86_64                                 5/20  Verifying  : redhat-logos-60.0.14-12.el6.centos.noarch                   6/20  Verifying  : udev-147-2.73.el6_8.2.x86_64                                7/20  Verifying  : initscripts-9.03.61-1.el6.centos.x86_64                     8/20  Verifying  : iptables-1.4.7-19.el6.x86_64                                9/20  Verifying  : openssh-5.3p1-123.el6_9.x86_64                             10/20  Verifying  : hwdata-0.233-20.1.el6.noarch                               11/20  Verifying  : sysvinit-tools-2.87-6.dsf.el6.x86_64                       12/20  Verifying  : util-linux-ng-2.17.2-12.28.el6_9.2.x86_64                  13/20  Verifying  : iputils-20071127-24.el6.x86_64                             14/20  Verifying  : libdrm-2.4.65-2.el6.x86_64                                 15/20  Verifying  : dbus-glib-0.86-6.el6.x86_64                                16/20  Verifying  : libpciaccess-0.13.4-1.el6.x86_64                           17/20  Verifying  : openssh-server-5.3p1-123.el6_9.x86_64                      18/20  Verifying  : iproute-2.6.32-57.el6.x86_64                               19/20  Verifying  : fipscheck-lib-1.2.0-7.el6.x86_64                           20/20Installed:  openssh-server.x86_64 0:5.3p1-123.el6_9Dependency Installed:  dbus-glib.x86_64 0:0.86-6.el6  fipscheck.x86_64 0:1.2.0-7.el6  fipscheck-lib.x86_64 0:1.2.0-7.el6  hwdata.noarch 0:0.233-20.1.el6  initscripts.x86_64 0:9.03.61-1.el6.centos  iproute.x86_64 0:2.6.32-57.el6  iptables.x86_64 0:1.4.7-19.el6  iputils.x86_64 0:20071127-24.el6  libdrm.x86_64 0:2.4.65-2.el6  libpciaccess.x86_64 0:0.13.4-1.el6  openssh.x86_64 0:5.3p1-123.el6_9  plymouth.x86_64 0:0.8.3-29.el6.centos  policycoreutils.x86_64 0:2.0.83-30.1.el6_8  redhat-logos.noarch 0:60.0.14-12.el6.centos  sysvinit-tools.x86_64 0:2.87-6.dsf.el6  tcp_wrappers-libs.x86_64 0:7.6-58.el6  udev.x86_64 0:147-2.73.el6_8.2  upstart.x86_64 0:0.6.5-17.el6  util-linux-ng.x86_64 0:2.17.2-12.28.el6_9.2Complete! ---> c488b880f48bRemoving intermediate container 54d1c22da719Step 10/15 : RUN echo $ROOT_PASSWORD |passwd --stdin root ---> Running in 9906618c76eaChanging password for user root.passwd: all authentication tokens updated successfully. ---> 473b44862b8bRemoving intermediate container 9906618c76eaStep 11/15 : RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key ---> Running in 1ff47b661b7dGenerating public/private dsa key pair.Your identification has been saved in /etc/ssh/ssh_host_dsa_key.Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.The key fingerprint is:c7:17:da:ca:fc:9c:b4:d6:45:fb:db:b0:93:a3:23:75 root@1ff47b661b7dThe key's randomart image is:+--[ DSA 1024]----+|                 ||                 ||            .    ||         . o .  .||        S + o  ..||         + o. E..||          +..o.o.||          .+oo=oo||           o*o.+o|+-----------------+Enter passphrase (empty for no passphrase): Enter same passphrase again:  ---> 956b3bf9ecc1Removing intermediate container 1ff47b661b7dStep 12/15 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key ---> Running in 1a1c8be34244Generating public/private rsa key pair.Your identification has been saved in /etc/ssh/ssh_host_rsa_key.Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.The key fingerprint is:fd:9c:57:31:62:06:0e:df:8d:af:60:c8:d7:75:77:f3 root@1a1c8be34244The key's randomart image is:+--[ RSA 2048]----+|         . .     ||          + o o  ||           o * *+||        ... + + O||        So.+ . .E||          oo.... ||            +..  ||             .   ||                 |+-----------------+Enter passphrase (empty for no passphrase): Enter same passphrase again:  ---> dd3bcb4ab9aeRemoving intermediate container 1a1c8be34244Step 13/15 : CMD /usr/bin/sshd -D ---> Running in 09c2eca527ce ---> 02941cde6997Removing intermediate container 09c2eca527ceStep 14/15 : EXPOSE 8080 ---> Running in f1f09cd58b26 ---> c6cbbb630d02Removing intermediate container f1f09cd58b26Step 15/15 : EXPOSE 22 ---> Running in 98ca940bb8c2 ---> 1f569892a3d7Removing intermediate container 98ca940bb8c2Successfully built 1f569892a3d7Successfully tagged tomcat:v2

8\启动容器 -p 表示映射到宿主机的固定端口, -P为随机端口

[root@docker-master ~]# docker run -itd --name web02 -p 80:8080 -p 2222:22 tomcat:v29cc734888d1f87bbbad4536c05dc1a62bae4f12ae8d88560067d1d89039f2ca1

9\ 测试远程连接是否可以登陆

10\此时便可以通过宿主机映射的2222端口进行连接了.

感谢各位的阅读,以上就是"Docker怎么构建JAVA环境镜像"的内容了,经过本文的学习后,相信大家对Docker怎么构建JAVA环境镜像这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0