alpine Linux与基于alpine制作JDK8镜像

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker commit 命令 1.下载基础镜像 2.使用此基础镜像创建/启动/进入容器 3.在容器安装自己需要的软件 4.将保存配置完成的容器提交成镜像 语法如下 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。 实例:将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明
  1. alpine Linux简介
    1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和
    BusyBox以减少系统的体积和运行时的资源消耗。
    2.Alpine Linux提供了自己的包管理工具:apk(注意:ubuntu中是apt-get,centos中式yum),我们可以通过https://pkgs.alpinelinux.org/packages 查询包信息
    3.Alpine Docker镜像继承了Alpine Linux发行版的这些优势,相比于其他Linux Docker镜像,它的体积非常小
    对比常用的、没有压缩过的基础镜像(查看当前的:latest标签):
    Alpine - 4.8MB
    Ubuntu - 124.8 MB
    Debian - 125.1MB
    Centos - 196MB
    4.建议使用Alpine Linux 3.10.0版本,这也是 v3.10 稳定系列的首个版本
    alpine:3.10

1 基于alpine制作JDK8镜像
1.1 下载镜像

$ docker pull alpine:latest

1.2 创建并编辑dockerfile

$ touch Dockerfile

$ vi Dockerfile
注1:dockerfile内容见资料/Dockerfile-Alpine.txt

1.3 执行dockerfile创建镜像

$ docker build -t jdk8:v2.0 .

1.4 创建并启动容器

$ docker create -it jdk8:v2.0
$ docker start 容器ID
或者
$ docker run -it -d jdk8:v2.0 /bin/sh

1.5 进入容器

$ docker exec -it 容器ID /bin/sh

注1:最后是sh而非bash

1.6 测试jdk

$ java -version

注1:docker exec -it 容器ID /bin/sh 默认使用当前帐号(即root)登入,通过whoami命令可以查看当前用户名,

    还可以通过如下命令切换到其它帐号
    docker exec -it --user root <容器ID> /bin/sh  
   

注2:openjdk:8-jdk-alpine这个镜像就和我们自己创建的镜像是一样,只不过JDK瘦身过了,体积更小

    大家可以自己下来,创建一个容器试一下

注3:最后制作完成后的镜像大小为400M左右

2 Docker容器之最小JRE基础镜像

2.1 首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M

  资料/jre-8u221-linux-x64.tar.gz

2.2 rz上传至ubuntu,并删除无用的文件,并重新压缩

  
  2.2.1 解压

  $ tar -zxvf jre-8u221-linux-x64.tar.gz

  2.2.2 查看jre大小(瘦身前230M)

  $ du -sh jre1.8.0_221

  2.2.3 进入jre目录,并执行瘦身命令

  $ cd jre1.8.0_221

  再次执行瘦身命令2.2.2 (命令见资料,瘦身后111M)
  
  2.2.4 返回上级目录,重新打包jre

  $ cd ..
  $ tar zcvf jre1.8.0_221.tar.gz jre1.8.0_221

2.3 创建并编辑dockerfile

  注1:dockerfile内容见资料/Dockerfile-Alpine-min.txt

2.4 执行dockerfile创建镜像

  $ docker build -t jdk8:v3.0 .

2.5 创建并启动容器

  $ docker create -it jdk8:v3.0    
  $ docker start 容器ID
  或者
  $ docker run -it -d jdk8:v2.0 /bin/sh

2.6 进入容器

  $ docker exec -it 容器ID /bin/sh 

2.7 测试jdk

  $ java -version

注1:openjdk:8-jdk-alpine这个镜像就和我们自己创建的镜像是一样,只不过JDK瘦身过了,体积更小。

    另外,openjdk和jdk也是有一定区别的,大家可以看下资料“14 OpenJDK与JDK的区别分析 - 简书.mht”了解一下

注2:Alpine制作JDK8镜像是有时区问题的,可以使用时区查看命令看一下

    date

3 将Docker镜像上传至阿里云(或从阿云下载镜像)

3.1 前期准备

 3.1.1 注册阿里云账户
 阿里云官方网站链接:https://dev.aliyun.com

 3.1.2 登陆账户
 3.1.3 配置Docker加速器
 3.1.4 创建镜像仓库的命名空间
 例如:xyzxyz

 3.1.5 创建镜像仓库(创建镜像仓库时要绑定一个代码托管网站,例如:github)
 例如:image-test

 重要的事情说三遍:请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~
 重要的事情说三遍:请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~
 重要的事情说三遍:请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~

3.2 push(推)镜像,将镜像推送到Registry

 3.2.1 登录到阿里云的doker仓库,--username为阿里云的用户名,另外,密码为开通镜像服务时设置的密码,
 注:忘记密码可以点击菜单:“容器镜像服务”->“默认实例”-->“访问凭证”进行修改

 $ docker login --username=yanppp2018 registry.cn-hangzhou.aliyuncs.com

 3.2.2 为本地镜像添加tag

 $ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xyzxyz/image-test:[镜像版本号]

 3.2.3 推送镜像(jdk8-alpine:1.0)

 $ docker push registry.cn-hangzhou.aliyuncs.com/xyzxyz/image-test:[镜像版本号]

3.3 pull(拉)镜像

 3.3.1 登录到阿里云的doker仓库

 $ sudo docker login --username=yanppp2018 registry.cn-hangzhou.aliyuncs.com

 3.3.2 从Registry中拉取镜像

 $ sudo docker pull registry.cn-hangzhou.aliyuncs.com/xyzxyz/image-test:[镜像版本号]

注1:仓库(Repository )是集中存放镜像的地方,又分公共仓库和私有仓库

    有时候容易把仓库与注册服务器( Regis盯)混淆 实际上注册服务器是存放仓库的具
    体服务器,每个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像 
  1. Docker commit 命令
    1.下载基础镜像
    2.使用此基础镜像创建/启动/进入容器
    3.在容器安装自己需要的软件
    4.将保存配置完成的容器提交成镜像

    语法如下
    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    OPTIONS说明:
    -a :提交的镜像作者;
    -c :使用Dockerfile指令来创建镜像;
    -m :提交时的说明文字;
    -p :在commit时,将容器暂停。
    实例:将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息

    $ docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Ubuntu Linux 数据安全/隐私保护
Beta 版 Ubuntu 24.04 LTS 镜像开放下载:GNOME 46 + Linux 6.8
IT之家附上镜像下载地址:Beta 版 Ubuntu 24.04 LTS
|
7月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
393 41
|
7月前
|
人工智能 安全 Linux
Alpine Linux设定指定的软件包安装源
以上就是如何为Alpine Linux设置特定的软件包的安装源的全部流程。这个过程非常简洁、明了,希望你在使用过程中能够找到乐趣。这个过程不仅可以提供你需要的软件,还可以根据你的网络条件和地域性需求进行调整,使你的Alpine Linux系统达到最佳性能。
708 24
|
7月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
511 17
|
7月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
160 18
|
7月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
224 10
|
9月前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
1423 21
|
11月前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
243 7
|
12月前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
599 7
|
Linux
linux开机挂载镜像
【10月更文挑战第1天】在 Linux 系统中,开机挂载镜像通常涉及几个关键步骤,包括创建挂载点、编辑配置文件以及重新加载配置
555 0