使用 docker-20.10.8 跑一个 java 应用程序

1, docker 安装

# 安装 yum-utils,否则没有下面用到的 yum-config-manager 命令
yum install -y yum-utils

添加Docker CE的yum源,如果国内不能访问的话,使用第二个链接
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum makecache fast
yum -y install docker-ce

systemctl start docker
systemctl enable docker

docker -v
Docker version 20.10.8, build 3967b7d

2, 制作一个 jre 镜像

mkdir /root/jreimg && cd /root/jreimg

# 准备 jdk-8u231-linux-x64.tar.gz
# 将其中的 jre 解压复制出来,上传到服务器
# 给 jre/bin 目录下的程序赋可执行权限
chmod -R +x /root/jreimg/jre/bin

vim Dockerfile
# 新增如下内容
FROM docker.io/jeanblanchard/alpine-glibc
ADD jre /usr/local/jre
ENV JAVA_HOME /usr/local/jre
ENV PATH ${PATH}:${JAVA_HOME}/bin
CMD ["/usr/local/jre/bin/java", "-version"]
# 解释一下 alpine-gblic 是一个带有 c 运行库的轻型 linux 发行版,非常小,通常只有十几兆。
# 注意一下 有了 CMD 命令,那么在创建容器时,就会执行这个 CMD 而不会进入容器了。

# 构建 jre 镜像
docker build -f /root/jreimg/Dockerfile -t jre:8 .

# 看一下我们构建出来的镜像
docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
jre                          8         ef4b6e66bda7   4 seconds ago   252MB
jeanblanchard/alpine-glibc   latest    3729f1c28e54   7 weeks ago     17.8MB

# 创建 jre 容器
# 注意一下,如果上面 Dockerfile 中有了 CMD 命令,那么下面的命令,是进入不了容器内部的,
# 而是执行该 CMD 命令,如果该命令不是阻塞型的,那么执行完,容器就停止了。
docker run --name jre -it jre:8
# 进入容器内部,确认一下 jre 正确传入了
/ # ls /usr/local/jre
bin     lib     plugin
/ # java -version
java version "1.8.0_231"
# ctrl + p + q 退出容器回到宿主机,而不会停止容器

# 看一下我们拥有的容器
docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED          STATUS          PORTS     NAMES
5c84d1e20533   jre:8     "/bin/sh"   48 seconds ago   Up 47 seconds             jre

# 停止容器
docker stop jre

# 如果要重来,那么删除容器,删除镜像
docker rm jre
docker rmi jre:8

3, 制作一个 java 应用程序镜像

创建一个 maven 项目 ash-test。

编写一个测试文件 Test.java

package com.dosrain;

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello, Luchunyu");
    }
}

打包成 ash-test-0.0.1.jar

开始制作 ast-test 镜像

mkdir /root/ashimg && cd /root/ashimg

# 将 ash-test-0.0.1.jar 上传到服务器

# 创建一个运行脚本
vim run.ash.sh
#!/bin/sh
java -cp /root/ash-test/ash-test-0.0.1.jar com.dosrain.Test
# 解释一下,alpine-gblic 镜像中只有 /bin/sh 的环境,如果使用 /bin/bash 是要报错的。

# 给 run.ash.sh 脚本文件赋可执行权限
chmod +x ./run.ash.sh

vim Dockerfile
# 新增如下内容
FROM jre:8
ADD ash-test-0.0.1.jar /root/ash-test/
ADD run.ash.sh /root/ash-test/
ENTRYPOINT ["/root/ash-test/run.ash.sh"]
# 解释一下 alpine-gblic 是一个带有 c 运行库的轻型 linux 发行版,非常小,通常只有十几兆。
# 注意一下 有了 CMD 命令,那么在创建容器时,就会执行这个 CMD 而不会进入容器了。

# 构建 jre 镜像
docker build -f /root/ashimg/Dockerfile -t ash-test:0.0.1 .

# 看一下我们构建出来的镜像
docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
ash-test                     0.0.1     6927c571c100   5 seconds ago   252MB
jre                          8         9c1b15bd1268   3 hours ago     252MB
jeanblanchard/alpine-glibc   latest    3729f1c28e54   7 weeks ago     17.8MB

# 创建 ash-test 容器
docker run --name ash-test -it ash-test:0.0.1 
Hello, Luchunyu

# 看一下我们拥有的容器
docker ps -a
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS                      PORTS     NAMES
ce6be592f09c   ash-test:0.0.1   "/root/ash-test/run.…"   56 seconds ago   Exited (0) 56 seconds ago             ash-test
b18bc1f4ef62   jre:8            "/bin/sh"                3 hours ago      Exited (1) 2 hours ago                jre

# 因为 ash-test 容器启动后,打印 hello, luchunyu 之后,就停止运行了,
# 我们可以不停的重新启动它,使它不停的执行预定的脚本程序。
docker start -ia ash-test

# 如果要重来,那么删除容器,删除镜像
docker rm ash-test
docker rmi ash-test:0.0.1

好了,本文先到这里了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值