【Docker】基于阿里云docker镜像服务的Docker镜像构建、托管保姆级教程(全网最详细教程)

CSDN 2024-07-18 13:37:02 阅读 83

🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk)

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

【Docker】基于阿里云docker镜像服务的Docker镜像构建、托管保姆级教程(全网最详细教程)

1. 概述1.1 什么是Docker?1.2 docker能干嘛?1.3 从哪里获取docker镜像1.3.1 Docker Hub1.3.2 其它Docker镜像服务平台1.3.3 线下分发

2. Ubuntu如何安装docker3. 如何构建docker镜像3.1 组装基础Dockerfile3.2 按需修改Dockerfile3.3 编译镜像3.4 查看镜像列表和镜像ID3.5 验证镜像

4. 如何使用阿里云docker镜像服务4.1 创建实例4.1.1 创建个人实例4.1.2 确认风险4.1.3 设置密码

4.2 创建命名空间4.3 创建镜像仓库4.3.1 填写仓库基本信息4.3.2 设置代码源

5. docker镜像上传到阿里云5.1 镜像打tag5.2 登录授权5.3 推送到服务器

6. 总结

1. 概述

1.1 什么是Docker?

Docker是一种开源的容器化平台,它允许开发人员将应用程序及其所有依赖项(如库、环境变量、配置文件等)打包成一个容器,从而实现应用程序在不同环境中的快速部署、可移植性和可复制性。Docker利用Linux内核提供的容器技术,将应用程序和其依赖项隔离在一个容器中,使得应用程序能够在不同的计算机、虚拟机或云平台上进行高效地部署和运行。

1.2 docker能干嘛?

Docker的应用场景包括但不限于:

应用程序打包和部署:开发人员可以将应用程序以及其所有依赖项打包成一个容器,从而实现一次构建,到处运行的部署方式。

微服务架构:Docker容器适合部署微服务架构,每个微服务可以打包成一个独立的容器,实现高度的模块化和可扩展性。

环境一致性:Docker容器提供了一种可靠的环境隔离方式,能够确保应用程序在不同环境中的一致性,从开发到测试再到生产环境的部署都能保持一致。

快速开发和测试:开发人员可以在本地环境中快速地启动、停止、删除容器,进行开发和测试,从而提高开发效率。

持续集成和持续部署:Docker容器可以与持续集成/持续部署工具集成,实现自动化构建、测试和部署流程,加快软件交付速度。

在嵌入式开发领域,Docker一般用于快速部署开发环境,保证所有服务器,所有开发人员的开发环境一致性,避免因环境差异带来各种各样的问题。

1.3 从哪里获取docker镜像

1.3.1 Docker Hub

Docker官方镜像平台提供了很多基础镜像,可以访问https://hub.docker.com/来查找。

1.3.2 其它Docker镜像服务平台

除了Docker Hub之外,国内外也有大量的平台提供了镜像搭建和维护服务,比如阿里云的容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances。

1.3.3 线下分发

他人构建好的镜像,可以打包后进行线下分发,他人获取后可以直接导入。

举例子:

可以使用<code>docker save命令将myubuntu镜像导出为myubuntu.tar

sudo docker save -o myubuntu.tar myubuntu

myubuntu.tar镜像可以自由分发,另外一个人拿到myubuntu.tar后就可以使用docker load导入到自己的机器上,然后就可以使用该镜像创建并启动容器了。

sudo docker load -i myubuntu.tar

2. Ubuntu如何安装docker

要在Ubuntu上安装Docker,可以按照以下步骤进行:

更新apt软件包索引:

sudo apt update

安装依赖包,以允许apt软件包在HTTPS上使用存储库:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

添加Docker的官方GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加Docker APT存储库:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再次更新apt软件包索引:

sudo apt update

确保从Docker存储库而不是默认存储库中安装:

apt-cache policy docker-ce

最后,安装Docker:

sudo apt install docker-ce

验证Docker是否正确安装:

sudo systemctl status docker

通过这些步骤,可以在Ubuntu上成功安装Docker,并可以开始使用Docker引擎了。

3. 如何构建docker镜像

要构建Docker镜像,需要编辑一个Dockerfile文件,来描述镜像的构建过程。现以更新java版本为例,讲述整个更新过程。

3.1 组装基础Dockerfile

新建一个空目录,然后创建一个名为Dockerfile的文本文件,将如下内容拷贝进去

FROM ubuntu:1604

MAINTAINER Alex <guoyong.lei@163.com>

WORKDIR /home/admin/workspace

ENTRYPOINT ["/bin/bash"]

3.2 按需修改Dockerfile

将下载好的java运行环境压缩包拷贝到Dockerfile同一目录下。然后我们使用Dockerfile的ADD命令将本地当前目录下的OpenJDK11U-jdk_x64_linux_11.0.12_7.tar.gz解压并拷贝到/opt/目录下,然后用过ENV命令修改PATH环境变量,追加新的java执行目录即可。

对应代码如下所示:

FROM ubuntu:1604

MAINTAINER Alex <guoyong.lei@163.com>

ADD ./OpenJDK11U-jdk_x64_linux_11.0.12_7.tar.gz /opt/

ENV PATH /opt/openjdk-11.0.12_7/bin:$PATH

WORKDIR /home/admin/workspace

ENTRYPOINT ["/bin/bash"]

3.3 编译镜像

Dockerfile编写完成后,使用docker build命令在Dockerfile所在的目录中构建镜像:

$ sudo docker build -f Dockerfile -t ubuntu1604_update_java .

Sending build context to Docker daemon 203 MB

Step 1 : FROM ubuntu:1604

---> 961496ae44f2

Step 2 : MAINTAINER Alex <guoyong.lei@163.com>

---> Using cache

---> ae3210afff6e

Step 3 : ADD ./OpenJDK11U-jdk_x64_linux_11.0.12_7.tar.gz /opt/

---> 7ea4f23aa58e

Removing intermediate container 66d7e8d08a31

Step 4 : ENV PATH /opt/openjdk-11.0.12_7/bin:$PATH

---> Running in 9681ee611e2d

---> 4de8fc80f273

Removing intermediate container 9681ee611e2d

Step 5 : WORKDIR /home/admin/workspace

---> Running in 015127eea321

---> 12d61d78f3fb

Removing intermediate container 015127eea321

Step 6 : ENTRYPOINT /bin/bash

---> Running in cd95f1c5a241

---> 586de0560544

Removing intermediate container cd95f1c5a241

Successfully built 586de0560544

上述命令中,

-f Dockerfile 表示使用Dockerfile描述文件来构建镜像-t ubuntu1604_update_java表示为新镜像指定一个名称(在此示例中为ubuntu1604_update_java.表示Dockerfile在当前目录下。

3.4 查看镜像列表和镜像ID

镜像编译成功后,就可以通过docker images命令查看镜像列表了。如下所示,第一个就是我们钢构件成的镜像:

$ sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

ubuntu1604_update_java latest 586de0560544 7 minutes ago 1.701 GB

dev_x86_backup_20211227 latest 12173815dc73 9 weeks ago 90.53 GB

dev_x86_backup_20211226 latest 14a64e5c857c 9 weeks ago 144.5 GB

ubuntu_1604_build_20211014 latest 961496ae44f2 4 months ago 1.376 GB

ubuntu18.04_sifeng latest 4bb2e57d175c 13 months ago 915.7 MB

ubuntu16.04_x64 latest 6a7a6103b47d 3 years ago 14.87 GB

3.5 验证镜像

镜像编译成功之后,可以用个docker run命令来验证。如下所示,执行docker run命令之后,会进入Docker环境,之后自行查看改动是否生效即可。确认完成之后,执行exit命令退出docker环境。

$ sudo docker run -it --rm ubuntu1604_update_java:latest

admin@1d7377478901:~/workspace$

admin@1d7377478901:~/workspace$ ls /opt/

openjdk-11.0.12_7

admin@1d7377478901:~/workspace$

admin@c66458d193aa:~/workspace$ type java

java is /opt/openjdk-11.0.12_7/bin/java

admin@1d7377478901:~/workspace$

admin@1d7377478901:~/workspace$ java --version

openjdk 11.0.12 2021-07-20

OpenJDK Runtime Environment 18.9 (build 11.0.12+7)

OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7, mixed mode)

admin@1d7377478901:~/workspace$

admin@69bd748cfdc4:~/workspace$ exit

exit

构建镜像的过程中,Docker将执行Dockerfile中指定的每个步骤,包括基础镜像的拉取、文件的复制、环境变量的设置等。最终,我们会获得一个包含指定应用程序和配置的Docker镜像,可以将其推送到Docker Hub或阿里云等镜像仓库中,也可以在本地使用。

4. 如何使用阿里云docker镜像服务

本章,我们以阿里云的Docker镜像服务为例,讲述如何其使用方法,包括平台初始化和镜像创建等操作。

待云端初始化完成并创建镜像之后,我们就可以将上一章中创建的docker镜像上传到阿里云存储下来,以备其它机器拉取使用了。

4.1 创建实例

打开阿里云容器镜像服务制台,新建实例。可按需选择企业版和个人版。下文都以个人版为例进行演示。

4.1.1 创建个人实例

在这里插入图片描述

4.1.2 确认风险

按照页面提示,个人版实例不提供SLA保障且有数量、安全性等限制,不保障安全和稳定,不建议生产业务中使用,以避免影响线上业务。如有需要可选择企业版实例或者其它方案进行存储分发。

在这里插入图片描述

4.1.3 设置密码

该密码在<code>docker login命令登录阿里云Docker服务器时输入,用于docker pull命令下载私有镜像docker push命令上传镜像时鉴权使用,请务必谨记。

在这里插入图片描述

4.2 创建命名空间

个人实例创建成功之后,需要先继续创建命名空间,命名空间用来管理镜像仓库,所以必须先创建命名空间,才能创建镜像。

点击左侧的<code>命名空间,点击创建命名空间按钮,填入命名空间的名字之后,点击确定按钮保存即可。

在这里插入图片描述

4.3 创建镜像仓库

命名空间创建成功后,就可以创建镜像仓库了。

4.3.1 填写仓库基本信息

点击左侧的<code>镜像仓库,点击创建镜像仓库,依次选择命名空间,填入仓库名称,选择仓库类型,填入摘要之后,点击下一步按钮。

在这里插入图片描述

4.3.2 设置代码源

我们最终是要将本地创建好的镜像上传到该镜像仓库,因此代码源选择<code>本地仓库即可,最后点击创建镜像仓库按钮即可。

在这里插入图片描述

到此为止,镜像仓库就创建成功了,如下图所示,可以查看到相关信息以及操作指南。

在这里插入图片描述

5. docker镜像上传到阿里云

在第三章中,我们已经把docker镜像编译完成并验证OK,也已在阿里云镜像平台创建好了镜像仓库,接下来就可以将本地的镜像上传阿里云docker镜像服务器了。

5.1 镜像打tag

先对本地镜像打tag,标记本地镜像,将其归入某一仓库。

如下所示,我们将586de0560544(<code>ubuntu1604_update_java的Image ID,docker image命令可以查看到)这个镜像归入registry.cn-hangzhou.aliyuncs.com/android_product/ubuntu16.04_android仓库。

sudo docker tag 586de0560544 registry.cn-hangzhou.aliyuncs.com/android_product/ubuntu16.04_android:latest

5.2 登录授权

$ docker login --username=<修改为自己的阿里云账号> registry.cn-hangzhou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为创建实例时设置的密码。

5.3 推送到服务器

镜像准备就绪,即可使用docker push命令推送到docker镜像服务器了。

sudo docker push reg.docker.alibaba-inc.com/tmjl_service/ubuntu-1604-build:latest

6. 总结

通过本文的探索,我们更深入地了解了Docker技术,并对其在软件开发和部署中的价值有了更清晰的认识。Docker的出现为应用程序的开发、部署和管理带来了革命性的变化,相信在未来,它将继续发挥重要作用,推动软件开发和部署的进步。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。