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

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
28天前
|
Java Linux
Linux上管理不同版本的 JDK
Linux上管理不同版本的 JDK
26 0
|
17天前
|
存储 Ubuntu Java
【Linux】已解决:Ubuntu虚拟机安装Java/JDK
【Linux】已解决:Ubuntu虚拟机安装Java/JDK
25 1
|
23天前
|
存储 安全 Linux
|
4天前
|
Ubuntu Java Linux
如何基于Alpine Linux创建更小的Docker镜像
如何基于Alpine Linux创建更小的Docker镜像?
|
29天前
|
弹性计算 安全 Cloud Native
Alibaba Cloud Linux镜像系统超好用!兼容CentOS生态,性能稳定性绝对可以!
Alibaba Cloud Linux是阿里云的自研Linux发行版,兼容CentOS/RHEL,提供长期免费支持。它针对云服务器ECS优化,适用于多种场景,如Web服务、云原生应用等。Alibaba Cloud Linux 3基于Anolis OS 8,提供安全、高性能、十年维护及丰富的开源生态。用户可在ECS购买时选择镜像安装,支持多架构并提供热补丁、解决方案和快速启动版。更换ECS操作系统是免费的。
111 5
|
29天前
|
Linux 测试技术 开发工具
CentOS Linux 8使用阿里源(安装jdk11、git测试)
CentOS Linux 8使用阿里源(安装jdk11、git测试)
161 1
|
10天前
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像12
【7月更文挑战第12天】安装【银河麒麟V10】linux系统--并挂载镜像
53 0
|
20天前
|
Linux Docker 容器
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
|
1月前
|
存储 数据管理 Linux
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
36 0
|
1月前
|
Linux Docker Python
【docker】Mac M1 构建 x64 linux镜像
【docker】Mac M1 构建 x64 linux镜像
46 0