Linux 环境使用 Dockfile 制作 jdk1.8 Docker 镜像

Linux 环境使用 Dockfile 制作 jdk1.8 Docker 镜像。基于 centos7,制作并上传到 docker hub。详细完整的步骤,教你快速入门 Docker 镜像制作。

1. 概述

  • 本机环境是 macOS Catalina 10.15.5,登录虚拟机 centos7 完成本次演示;
  • 从 oracle 官网下载 安装 JDK 1.8,并拷贝到虚拟机 centos7 服务器;

1.1. oracle 官网下载 jdk1.8

  • jdk 下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
  • 本次演示下载目标文件:jdk-8u251-linux-x64.tar.gz

2. 拷贝到服务器

# 拷贝 jdk 到服务器
scp -i ~/.ssh/aaron jdk-8u251-linux-x64.gz aaron@192.168.1.168:/home/aaron/download

# 登录服务器
ssh my_life

cd /home/aaron/download

# 解压文件
tar -xvf jdk-8u251-linux-x64.tar.gz
  • 此处使用了 rsa 私钥拷贝文件,不用再输入密码;
  • ssh my_life 命令是免密登录,免密登录配置可参考,文章链接:ssh免密登录Linux服务器

3. 生成 Dockerfile 文件

vi Dockerfile

文件内容:

FROM centos:centos7
MAINTAINER aaron aaronst21.163.com

# 设置环境变量
ENV JAVA_VERSION 1.8.0_251
ENV JAVA_HOME /usr/local/jdk${JAVA_VERSION}
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 将解压后的 jdk 包拷贝到 docker 容器中
COPY jdk${JAVA_VERSION} ${JAVA_HOME}

4. 使用 Dockerfile 创建镜像

docker build -t centos7_with_jdk8:1.8.0_251 .
  • centos7_with_jdk8 为镜像名称;
  • 1.8.0_251 是 tag 信息,tag 信息定义为 jdk 版本号,方便大家识别和使用。

5. 验证创建结果

docker run -i -t centos7_with_jdk8:1.8.0_251 bash

# 进入 docker container,以下命令在 container 中执行
java -version

# 退出 container
exit

输出版本信息:
java version “1.8.0_251”
Java™ SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot™ 64-Bit Server VM (build 25.251-b08, mixed mode)

6. 为本地镜像打 tag

docker tag centos7_with_jdk8:1.8.0_251 aaronst21/centos7_with_jdk8:1.8.0_251

aaronst21 是 docker 用户 id。

7. 上传到 docker hub

# 登录 docker,需要输入用户名和密码
docker login

# 推送到 docker 仓库
docker push aaronst21/centos7_with_jdk8:1.8.0_251
  • 如果没有账户,到 docker 官网注册,注册地址:https://www.docker.com;
  • push 上传耗时较长,请耐心等待;
  • 上传完毕后,可以登录 docker hub 查询:https://hub.docker.com/repositories

8. 删除制作的 images 和 container

# 查看 container
docker ps -a

# 删除 container
docker rm 703b8f5d6baa
docker rm a80dc7ba683f

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a80dc7ba683f centos7_with_jdk8:1.8.0_251 “bash” 4 minutes ago Exited (0) 40 seconds ago exciting_faraday
703b8f5d6baa centos7_with_jdk8:1.8.0_251 “bash” About an hour ago Exited (0) About an hour ago gallant_swanson

# 查看镜像列表
docker images

# 删除 image
docker rmi f702e5186148

docker rmi b5b4d78bc90c

REPOSITORY TAG IMAGE ID CREATED SIZE
aaronst21/centos7_with_jdk8 1.8.0_251 f702e5186148 2 hours ago 609MB
centos centos7 b5b4d78bc90c 4 weeks ago 203MB

9. 下载制作的镜像

docker pull aaronst21/centos7_with_jdk8:1.8.0_251

10. 验证

docker run -i -t aaronst21/centos7_with_jdk8:1.8.0_251 bash

# 进入 docker container,以下命令在 container 中执行
java -version

# 退出 container
exit

输出版本信息:
java version “1.8.0_251”
Java™ SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot™ 64-Bit Server VM (build 25.251-b08, mixed mode)

QA

1. docker pull 命令执行报错 error pulling image configuration?

完整错误信息:

error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/b5/b5b4d78bc90ccd15806443fb881e35b5ddba924e2f475c1071a38a3094c3081d/data?verify=1591462747-zJbym6bYHdTU8yA2Ky9UriRlJPY%3D: dial tcp: lookup production.cloudflare.docker.com on 100.100.2.138:53: no such host

解决方案:

vi /etc/resolv.conf

# 增加配置
Nameserver 8.8.8.8

# 重启 docker 
sudo systemctl restart docker
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值