自定义镜像上传阿里云

1. 基于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

   #5.进入容器   
   docker exec -it 容器ID /bin/sh

   注1:最后是sh而非bash

   #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容器之最小JDK基础镜像
   #1.首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M
      资料/jre-8u221-linux-x64.tar.gz

   #2.rz上传至ubuntu,并删除无用的文件,并重新压缩
      #解压
      tar -zxvf jre-8u221-linux-x64.tar.gz
      #查看jre大小(瘦身前230M)
      du -sh jre1.8.0_221
      #进入jre目录,并执行瘦身命令
      cd jre1.8.0_221
      #执行瘦身命令(命令见资料,瘦身后111M)
      #返回上级目录,重新打包jre
      cd ..
      tar zcvf jre1.8.0_221.tar.gz jre1.8.0_221

   #3.创建并编辑dockerfile
      注1:dockerfile内容见资料/Dockerfile-Alpine-min.txt

   #4.执行dockerfile创建镜像
      docker build -t jdk8:v3.0 .

   #5.创建并启动容器
      docker create -it jdk8:v3.0    
      docker start 容器ID

   #6.进入容器   
      docker exec -it 容器ID /bin/sh 

   #7.测试jdk
      java -version


   注1:openjdk:8-jdk-alpine这个镜像就和我们自己创建的镜像是一样,只不过JDK瘦身过了,体积更小。
        另外,openjdk和jdk也是有一定区别的,大家可以看下资料“14 OpenJDK与JDK的区别分析 - 简书.mht”了解一下

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

3. 将自定义镜像上传至阿里云(或从阿云下载镜像)
   ## 前期准备
   #1.注册阿里云账户
   阿里云官方网站链接:https://dev.aliyun.com
   #2.登陆账户
   #3.配置Docker加速器
   #4.创建镜像仓库的命名空间
   例如:xyzxyz
   #5.创建镜像仓库(创建镜像仓库时要绑定一个代码托管网站,例如:github)
   例如:image-test

   ## 重要的事情说三遍:请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~请将URL改成自己的阿里云的地址~~~
   ## push(推)镜像
   ##将镜像推送到Registry
   #1.登录到阿里云的doker仓库,--username为阿里云的用户名,另外,密码为开通镜像服务时设置的密码,
   #  忘记密码可以点击菜单:“容器镜像服务”->“默认实例”-->“访问凭证”进行修改
   docker login --username=yanppp2018 registry.cn-hangzhou.aliyuncs.com
   #2.为本地镜像添加tag
   docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xyzxyz/image-test:[镜像版本号]
   #3.推送镜像(jdk8-alpine:1.0)
   docker push registry.cn-hangzhou.aliyuncs.com/xyzxyz/image-test:[镜像版本号]

   ## pull(拉)镜像
   #1.登录到阿里云的doker仓库
   sudo docker login --username=yanppp2018 registry.cn-hangzhou.aliyuncs.com
   #从Registry中拉取镜像
   sudo docker pull registry.cn-hangzhou.aliyuncs.com/xyzxyz/image-test:[镜像版本号]


   注1:仓库(Repository )是集中存放镜像的地方,又分公共仓库和私有仓库
        有时候容易把仓库与注册服务器( Regis盯)混淆 实际上 册服务器是存放仓库的具
        体服务器, 个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像 

4. 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


附录一:Alpine制作JDK8镜像的坑
用Alpine跑了JDK8的镜像结果发现,JDK还是无法执行.后来翻阅文档才发现
Java是基于GUN Standard C library(glibc)
Alpine是基于MUSL libc(mini libc)
所以Alpine需要安装glibc的库

附录二:Docker/Dockerfile debug调试技巧
docker run -d --name jstorm-zookeeper zookeeper:3.4
docker logs jstorm-zookeeper

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值