一、alpine Linux简介
1、Alpine Linux是一个轻型Linux发行版
2、Alpine Linux提供了自己的包管理工具:apk(注意:ubuntu中是apt-get,centos中式yum)
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 - 5.5MB
Ubuntu - 124.8 MB
Debian - 125.1MB
Centos - 220MB
4.建议使用Alpine Linux 3.10.0版本,这也是 v3.10 稳定系列的首个版本
alpine:3.10
二、基于alpine制作JDK8镜像
1 下载镜像
$ docker pull alpine:3.10
2 创建并编辑Dockerfile
$ touch Dockerfile
$ vi Dockerfile
`注1:Dockerfile内容见资料/Dockerfile-Alpine.txt`
3 执行Dockerfile创建镜像
$ docker build -t jdk8:v2.0 .
4 创建并启动容器
$ docker create -it jdk8:v2.0
$ docker start 容器ID
或者
$ docker run -it -d --name tomcat01 jdk8:v2.0 /bin/sh
5 进入容器
$ docker exec -it 容器名字 /bin/sh
`注1:最后是sh而非bash`
6 测试jdk
$ java -version
三、Docker容器之最小JRE基础镜像
一个完整的jdk包包含了 jdk(开发坏境) 和 jre(运行坏境)
jdk用于开发坏境,jre用于运行坏境
1、 首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M
资料/jre-8u221-linux-x64.tar.gz
2、 把资料中的jre上传至/alpine,删除无用的文件,并重新压缩
3、将jre的jar包上传至服务器中,然后解压
tar -zxvf jre-8u221-linux-x64.tar.gz
4、给jre瘦身
1.查看jre大小(瘦身前229M)
cd /alpine/jre
du -sh jre1.8.0_221
2.进入jre目录,并执行瘦身命令
cd jre1.8.0_221
du -sh jre1.8.0_221
3.返回上级目录,重新打包jre
cd /alpine/jre
tar -zcf jre1.8.0_221.tar.gz jre1.8.0_221
5、创建并编辑Dockerfile
6、执行Dockerfile创建镜像
docker build -t jdk8:v3.0 .
`注意 点`
7、创建并启动容器
docker run -it -d jdk8:v3.0 /bin/sh
8、进入容器
docker exec -it 容器ID /bin/sh
9、测试jdk
java -version
注2:Alpine制作JDK8镜像是有时区问题的,可以使用时区查看命令看一下 date
四、 将Docker镜像上传至阿里云(或从阿云下载镜像)
阿里云官方网站链接:https://dev.aliyun.com
1.前期准备
登陆阿里云,搜索【容器镜像服务】
配置Docker加速器
创建命名空间
创建镜像仓库(创建镜像仓库时要绑定一个代码托管网站,例如:github)
点击对应镜像仓库列表后的管理:
上传和下载镜像的相关命令都在管理里面有详细说明
- push(推)镜像
登录阿里云
密码并不是登录阿里云的密码,而是在访问凭证里面设置的固定密码
docker login --username=17674762082 registry.cn-hangzhou.aliyuncs.com
修改镜像的名字,让它符合阿里云的规则
镜像id就是刚刚瘦身后的jre,相当于把jre做了一次克隆,克隆后的标签满足了阿里云的规则,然后上传
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zking220/t220:[镜像版本号]
把镜像上传到阿里云,成功后点击对应的管理,在镜像版本里面可以看到刚刚上传的镜像
docker push registry.cn-hangzhou.aliyuncs.com/zking220/t220:[镜像版本号]
3.pull(拉)镜像
登录阿里云
docker login --username=17674762082 registry.cn-hangzhou.aliyuncs.com
从阿里云上下载镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zking220/t220:[镜像版本号]
一次性停止并且删除所有容器命令
docker stop ${docker ps -aq}&&docker rm ${docker ps -aq}