Docker:镜像上传到阿里云的详细指南

1、简述

Docker 作为一种流行的容器化技术,使得开发者可以轻松创建、部署和管理容器化应用。在使用 Docker 构建完镜像后,将其上传到一个可靠的镜像仓库是关键的一步。阿里云提供了稳定且高效的容器镜像服务(ACR),本文将详细介绍如何将 Docker 镜像上传到阿里云。

2、准备工作

在开始之前,请确保您已经完成以下准备工作:

  • 注册并登录到阿里云账户。
  • 创建一个阿里云容器镜像服务(ACR)实例。
  • 安装并配置好 Docker 环境。

创建阿里云容器镜像服务实例

  • 登录到阿里云控制台。
  • 在左侧导航栏中,选择“容器镜像服务”。
  • 点击“创建实例”,填写实例名称,选择计费方式和区域,完成实例创建。

在这里插入图片描述

2、编写Dockerfile 文件

以jdk 和Tomcat为例,先准备好上传镜像的材料apache-tomcat-8.5.83.tar.gz ,jdk-8u202-linux-x64.tar.gz。根据自己所需要的版本去官网下载,下载好放指定位置编写好Dockerfile 文件:

# 基础镜像
FROM ubuntu
 
# 描述
MAINTAINER jdk_comcat:8
 
# 解压与复制jdk.tar.gz
# 由于add/copy的文件必须使用上下文目录的内容, 因此要先将jdk.tar.gz拷贝到当前目录
ADD jdk-8u202-linux-x64.tar.gz /usr/local
ADD apache-tomcat-8.5.83.tar.gz /usr/local
 
# 配置 JDK 的环境变量和字符集
ENV JAVA_HOME /usr/local/jdk1.8.0_202
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV LANG C.UTF-8
 
# 配置tomcat环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.83
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.83
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 
# 暴露端口
EXPOSE 8080
 
# 启动tomcat -- 最后的命令要一直运行下去,以防容器退出
ENTRYPOINT /usr/local/apache-tomcat-8.5.83/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.83/logs/catalina.out

3、构建镜像

在将镜像上传到阿里云之前,您需要先构建镜像。假设您的 Dockerfile 位于当前目录:

[root@localhost tomcat]# sudo docker build -t jdk_tomcat:8 .
Sending build context to Docker daemon  204.7MB
Step 1/13 : FROM ubuntu
 ---> ba6acccedd29
Step 2/13 : MAINTAINER jdk_comcat:8
 ---> Running in b5c84e47128f
Removing intermediate container b5c84e47128f
 ---> 72de2dce1ee2
Step 3/13 : ADD jdk-8u202-linux-x64.tar.gz /usr/local
 ---> 021c4fdb4c85
Step 4/13 : ADD apache-tomcat-8.5.83.tar.gz /usr/local
 ---> cdcc494eb5dc
Step 5/13 : ENV JAVA_HOME /usr/local/jdk1.8.0_202
 ---> Running in 2e951823402d
Removing intermediate container 2e951823402d
 ---> 85ac9b509ae3
Step 6/13 : ENV PATH $JAVA_HOME/bin:$PATH
 ---> Running in 7cf34f21e792
Removing intermediate container 7cf34f21e792
 ---> f22b2517ccf8
Step 7/13 : ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Running in ecff0f632b98
Removing intermediate container ecff0f632b98
 ---> 27cf9956e0b1
Step 8/13 : ENV LANG C.UTF-8
 ---> Running in 5d06830ff12a
Removing intermediate container 5d06830ff12a
 ---> e512ebf2fa3b
Step 9/13 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.83
 ---> Running in fe6a94685e33
Removing intermediate container fe6a94685e33
 ---> 2d7ac9eba680
Step 10/13 : ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.83
 ---> Running in f55ec425465a
Removing intermediate container f55ec425465a
 ---> e7333a163afb
Step 11/13 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 ---> Running in 84debe4a844f
Removing intermediate container 84debe4a844f
 ---> f72e6f752d2c
Step 12/13 : EXPOSE 8080
 ---> Running in 2e9d09b5830c
Removing intermediate container 2e9d09b5830c
 ---> c9d2b65d292f
Step 13/13 : ENTRYPOINT /usr/local/apache-tomcat-8.5.83/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.83/logs/catalina.out
 ---> Running in ad6353686b35
Removing intermediate container ad6353686b35
 ---> fa0bafc06889
Successfully built fa0bafc06889
Successfully tagged jdk_tomcat:8

4、启动当前镜像

通过docker run 启动jdk_tomcat:8 当前镜像

sudo docker run -itd -p 8080:8080  --name jdk_tomcat jdk_tomcat:8

启动成功后,通过 docker images 查看镜像。
通过docker ps查看容器:

[root@localhost tomcat]# docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS                    PORTS                                                                                                                               NAMES
1faae7d0ce90   jdk_tomcat:8       "/bin/sh -c '/usr/lo…"   4 seconds ago   Up 3 seconds              0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                                                                           jdk_tomcat
8e97133ab2de   gitlab/gitlab-ce   "/assets/wrapper"        30 hours ago    Up 29 minutes (healthy)   80/tcp, 0.0.0.0:8090->8090/tcp, :::8090->8090/tcp, 0.0.0.0:8022->22/tcp, :::8022->22/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   gitlab

5、镜像仓库

5.1、登陆阿里云

在本地环境中,您需要通过 Docker CLI 登录到阿里云的镜像仓库。首先,获取仓库的登录命令:

docker login --username=*** registry.cn-hangzhou.aliyuncs.com

输入自己的密码:

问题:Error response from daemon: Get “https://registry.cn-hangzhou.aliyuncs.com/v2/”: unauthorized: authentication required
解决方法:
1、不要使用第三方授权登陆,自己注册一个阿里云账号
2、修改DNS存值。

[root@localhost tomcat]# vi /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 192.168.220.2

保证DNS 存在值
在这里插入图片描述

5.2 添加标签和推送

通过docker images 获取镜像ID,然后通过阿里给的指令推送:

$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:[镜像版本号]
[root@localhost tomcat]# docker tag fa0bafc06889  registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:8
[root@localhost tomcat]# docker push  registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:8
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat]
032714f94ad3: Pushed 
4e3b53d854a6: Pushed 
9f54eef41275: Pushed 
8: digest: sha256:68b03cdf1d81b57489b7bf6de2761d7c0cce826e85c31a93fe11a029b3a21eb5 size: 954
5.3 查看和拉取

查看阿里云镜像仓库:
在这里插入图片描述

拉取上传的镜像:

 sudo docker pull registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:8

6、制作JDK 镜像

同理制作JDK镜像,添加jar包,测试jdk镜像是否成功:

docker run -d --name eureka-9001  --privileged=true   --network host --restart always -w /usr/eureka/  -v /data/eureka:/usr/eureka  registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_li:8 /bin/sh -c 'sh start.sh'

成功启动Eureka:
在这里插入图片描述

7、总结

将 Docker 镜像上传到阿里云容器镜像服务(ACR)可以帮助您更方便地管理和分发镜像。通过本文的步骤,您可以轻松完成从构建镜像到上传镜像的整个流程。无论是开发、测试还是生产环境,阿里云 ACR 都提供了稳定和高效的解决方案。

希望这篇指南能对您有所帮助,祝您在使用 Docker 和阿里云时一切顺利!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾荒的小海螺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值