Docker镜像上传

本文详细介绍了如何编写Dockerfile,基于Alpine Linux制作包含JRE的镜像,并通过阿里云配置进行镜像上传和下载。具体步骤包括镜像的编写,如指定基础镜像、设置工作目录、添加文件、更新软件源和安装软件,以及阿里云的实例创建、命名空间、镜像仓库创建等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、镜像编写

1、搜索alpine

这是一个缩小版的镜像

 2.修改Dockerfile:

#1.指定基础镜像,并且必须是第一条指令
#FROM alpine:latest
FROM alpine:3.10

#2.指明该镜像的作者和其电子邮件
MAINTAINER xyz "xyz@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java

#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
ADD jre-8u221-linux-x64.tar.gz /usr/local/java/
## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
COPY glibc-2.29-r0.apk /usr/local/java/
COPY glibc-bin-2.29-r0.apk /usr/local/java/
COPY glibc-i18n-2.29-r0.apk /usr/local/java/

#5.更新Alpine的软件源为阿里云,因为从默认官源拉取实在太慢了
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
    echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade

#6.运行指定的命令
## Alpine linux为了精简本身并没有安装太多的常用软件,apk类似于ubuntu的apt-get,
## 用来安装一些常用软V件,其语法如下:apk add bash wget curl git make vim docker
## wget是linux下的ftp/http传输工具,没安装会报错“/bin/sh:   wget: not found”,网上例子少安装wget
## ca-certificates证书服务,是安装glibc前置依赖
RUN apk --no-cache add ca-certificates wget \
    && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
    && apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \
    && rm -rf /var/cache/apk/* glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk

#7.配置环境变量
ENV JAVA_HOME=/usr/local/java/jre1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

3.增加

4.下载jdk.2.0 

 

下载成功

 二、阿里云配置

1、服务器中创建个人实例、

2、新建命名空间

3、创建镜像仓库 

4、上传镜像

(1)服务器的镜像是没有镜像版本的

 将Dockerfile中的jdk改为jre

#1.指定基础镜像,并且必须是第一条指令
#FROM alpine:latest
FROM alpine:3.10

#2.指明该镜像的作者和其电子邮件
MAINTAINER xyz "xyz@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java

#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
ADD jre-8u221-linux-x64.tar.gz /usr/local/java/
## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
COPY glibc-2.29-r0.apk /usr/local/java/
COPY glibc-bin-2.29-r0.apk /usr/local/java/
COPY glibc-i18n-2.29-r0.apk /usr/local/java/

#5.更新Alpine的软件源为阿里云,因为从默认官源拉取实在太慢了
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
    echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade

#6.运行指定的命令
## Alpine linux为了精简本身并没有安装太多的常用软件,apk类似于ubuntu的apt-get,
## 用来安装一些常用软V件,其语法如下:apk add bash wget curl git make vim docker
## wget是linux下的ftp/http传输工具,没安装会报错“/bin/sh:   wget: not found”,网上例子少安装wget
## ca-certificates证书服务,是安装glibc前置依赖
RUN apk --no-cache add ca-certificates wget \
    && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
    && apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \
    && rm -rf /var/cache/apk/* glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk

#7.配置环境变量
ENV JAVA_HOME=/usr/local/java/jre1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

(4)打包

已近解压完了的,下载jdk:3.0

执行语句:docker build -t jdk:3.0 .

5)解压文件夹  可以将文件再次压缩到更小,可以执行瘦身指令

进入jre中,执行瘦身命令 

#删除文本文件
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html


#删除其他无用文件
rm -rf lib/plugin.jar \
lib/ext/jfxrt.jar \
bin/javaws \
lib/javaws.jar \
lib/desktop \
plugin \
lib/deploy* \
lib/*javafx* \
lib/*jfx* \
lib/amd64/libdecora_sse.so \
lib/amd64/libprism_*.so \
lib/amd64/libfxplugins.so \
lib/amd64/libglass.so \
lib/amd64/libgstreamer-lite.so \
lib/amd64/libjavafx*.so \
lib/amd64/libjfx*.so

在将文件变回压缩包:

三、阿里云上传下载

1、阿里云的基本信息已经教了如何操作

①先登录阿里云,输入阿里云的密码

②将镜像推送到Registry

③从Registry中拉取镜像

上传完成: 

服务器中的镜像版本就有东西了,上传的是一个压缩版

 

将所有镜像删除:docker rmi -f $(docker images) 

假如以后去别人电脑上安装镜像

(1)从Registry中拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/miweiyan/docker03:[镜像版本号]

 

### 上传Docker镜像到仓库 为了成功地将构建好的Docker镜像上传至仓库,需遵循一系列特定的操作流程。首先,在执行任何操作前确认已安装并配置好Docker环境。 #### 登录Docker仓库 在推送镜像之前,必须先登录目标仓库。对于公有的Docker Hub或其他自定义的私有仓库,均可以通过`docker login`指令完成身份验证过程[^1]。例如: ```bash $ docker login --username=your_username https://registry.example.com ``` 此命令会提示输入密码,并建立与指定仓库的安全连接。 #### 给镜像打标签 一旦登录成功,下一步是对准备上传的本地镜像添加合适的标签。这是为了让远程仓库能够正确定位和管理这些资源。标签格式通常为`username/repository:tag`,其中`username`代表用户的Docker Hub账号名;`repository`表示存储库的名字;而`:tag`则是版本号或者其他描述性的标记[^5]。应用标签的例子如下所示: ```bash $ docker tag local_image_name your_username/repository:latest ``` 这里假设`local_image_name`是要上传的本地镜像名称,将其关联到名为`repository`的新位置,并赋予默认标签`latest`。 #### 推送镜像到仓库 最后一步就是实际推送经过标注后的镜像文件到对应的在线仓库中去了。利用`docker push`命令即可轻松实现这一点,只需提供完整的路径作为参数传递过去就好: ```bash $ docker push your_username/repository:latest ``` 上述命令将会把带有`your_username/repository:latest`标签的镜像推送到相应的仓库里去[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值