Docker鏡像構(gòu)建-Aliyun詳解
對(duì)于搞編程開(kāi)發(fā)的伙伴來(lái)說(shuō),我一直都推薦使用 Mac 電腦,因?yàn)?Windows 電腦除了相對(duì)省點(diǎn)錢,其他的什么也不?。樯??那我 Windows 電腦推溝里?
其實(shí)到也不是 Windows 不好,只是在編程開(kāi)發(fā)中的環(huán)境配置,要有太多的額外的兼容問(wèn)題。因?yàn)?Windows 是一個(gè)系統(tǒng),這個(gè)系統(tǒng)被各個(gè)廠商使用,安裝到自己家的電腦上。因此一個(gè)軟件安裝后,不同的機(jī)器,都可能在一些細(xì)節(jié)功能上,有自己的差異化處理方案。就像 Docker 安裝,Mac 電腦直接安裝即可,Windows 不是安裝虛擬機(jī),就是搞個(gè) wsl2,不少小白基本就在這崩潰了。
相對(duì)說(shuō),Mac 電腦就好的多,因?yàn)槿思业南到y(tǒng)只給自己家的電腦使用。所以各類軟件的安裝和使用也不會(huì)有那么多的適配問(wèn)題了。另外 Mac 電腦也等同于是在 Linux 上做開(kāi)發(fā),你的所有編程中使用的命令,幾乎就是無(wú)差別的可以在云環(huán)境 Linux 執(zhí)行。因此,Mac 電腦除了不省錢,其他的都??;省時(shí)、省心、省力。
不過(guò),Windows 電腦也不能推溝里呀!所以,我們要想點(diǎn)辦法,讓一些如 Docker 的環(huán)境安裝和鏡像構(gòu)建,讓外部系統(tǒng)解決。不就可以了噻!
一、DevOps 流水線
DevOps 流水線,是一種可持續(xù)集成交付的手段。用戶可以使用流水線自定義編排項(xiàng)目發(fā)布過(guò)程中所涉及的代碼打包、單元測(cè)試、自動(dòng)部署等各項(xiàng)階段。 通過(guò)一系列自動(dòng)化任務(wù)的組合解決日常開(kāi)發(fā)工作中繁瑣而重復(fù)的任務(wù)。

官網(wǎng)(JD):https://docs.jdcloud.com/cn/devops/application-scenarios(opensnew window)
市面上也有很多的免費(fèi)的可持續(xù)交付工具,方便我們自己部署項(xiàng)目使用。如 Github Actions (opens new window)、buddy.works (opens new window)、Jenkins (opens new window),這些已經(jīng)在 bugstack.cn (opens new window)編程路書(shū)(發(fā)布部署)中分享。今天再分享一個(gè)阿里云的 DevOps 流水線操作,實(shí)際使用體驗(yàn)效果還不錯(cuò)。
二、云效工作臺(tái)介紹
本次案例會(huì)涉及到使用阿里云效平臺(tái)的 代碼管理、流水線配置、容器鏡像
1. 代碼&流水線

- 地址:https://devops.aliyun.com/workbench(opens new window)
 - 說(shuō)明:用于管理工程代碼和配置流水線。你可以提交本地代碼,也可以把其他- 倉(cāng)庫(kù)的代碼導(dǎo)入到代碼管理中,如;Github、Gitee、Gitlab,其他的也可以通過(guò) url 導(dǎo)入。
 
2. 容器鏡像服務(wù)
2.1 容器申請(qǐng)

地址:https://cr.console.aliyun.com/cn-hangzhou/instance/dashboard(opensnew window)
- 說(shuō)明:容器鏡像,相當(dāng)于代理的 Docker Hub (opens new window)可以把我們通過(guò)流水線構(gòu)建的項(xiàng)目(SpringBoot/React/…)構(gòu)建的鏡像,放到容器鏡像服務(wù)中。之后就可以在其他云環(huán)境或者本地環(huán)境拉取使用了。
 
2.2 新建服務(wù)


- 這里要新建一個(gè)鏡像名稱,xfg-dev-tech-aliyun-workbench 的鏡像。這個(gè)鏡像為后續(xù)的流水線構(gòu)建使用。
 - 創(chuàng)建的時(shí)候,要選擇對(duì)應(yīng)的倉(cāng)庫(kù)。可以是 Codeup 的阿里云代碼庫(kù),也可以是 Github 關(guān)聯(lián)地址的倉(cāng)庫(kù)。
 - 再往下開(kāi)始平臺(tái),你需要注冊(cè)一個(gè)云校平臺(tái)和容器鏡像服務(wù)。
 
三、上傳代碼庫(kù)
1. 案例工程

# 基礎(chǔ)鏡像 openjdk:8-jre-slim 代理地址;registry.cn-hangzhou.aliyuncs.com/xfg-studio/openjdk:8-jre-slim FROM registry.cn-hangzhou.aliyuncs.com/xfg-studio/openjdk:8-jre-slim # 作者 MAINTAINER xiaofuge # 配置 ENV PARAMS="" # 時(shí)區(qū) ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 在容器內(nèi)創(chuàng)建目錄/home/project 用于存放應(yīng)用程序和相關(guān)文件 RUN mkdir -p /home/project # 設(shè)置工作目錄為/home/project,即后續(xù)的命令都在這個(gè)工作目錄下執(zhí)行。 WORKDIR /home/project # 添加應(yīng)用 ADD xfg-dev-tech-app/target/xfg-dev-tech-app.jar /home/project/xfg-dev-tech-app.jar ## 在鏡像運(yùn)行為容器后執(zhí)行的命令 ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /home/project/xfg-dev-tech-app.jar $PARAMS"]
- 腳本:注意配置的腳本信息,如果你是新的其他的工程,可以參考配置。
 
2. 上傳項(xiàng)目
把案例代碼上傳到阿里云代碼庫(kù)的方式有很多,可以從 Github 導(dǎo)入,也可以先把代碼拉取到本地,在從本地上傳到阿里云代碼庫(kù)。但兩個(gè)方式都建議把代碼拉取到本地代碼一份,方便進(jìn)行修改。
2.1 導(dǎo)入代碼

- 首先,進(jìn)入案例工程地址(Github),點(diǎn)擊 Fork 克隆到自己的倉(cāng)庫(kù)中。
 - 之后,在阿里云效點(diǎn)擊導(dǎo)入倉(cāng)庫(kù),這里可以選擇從 Github 導(dǎo)入。導(dǎo)入的時(shí)候,需要填寫(xiě) Access Token。創(chuàng)建地址:https://github.com/settings/tokens(opens new window)
 - 最后,在確認(rèn)后會(huì)展示你的 Github 倉(cāng)庫(kù)列表,選擇要導(dǎo)入的工程即可。
 
2.2 上傳代碼

- 首先,開(kāi)始操作之前,你要把提供的案例代碼拉取到本地。
 - 之后,在云效代碼庫(kù),新建一個(gè)代碼庫(kù)。新建后可以獲得一個(gè) https 提交代碼庫(kù)的地址。另外,要注意你還要在云效倉(cāng)庫(kù)個(gè)人設(shè)置里,創(chuàng)建一個(gè),個(gè)人訪問(wèn)令牌(地址:https://account-devops.aliyun.com/settings/profile (opens new window))。
 - 最后,在自己 Intellij IDEA 菜單欄上,點(diǎn)擊 Git 選擇 Manage Remotes 添加阿里云效倉(cāng)庫(kù)地址,之后就可以把代碼提交到阿里云效了。
 
3. 添加流水線
3.1 構(gòu)建操作

- 如圖,配置構(gòu)建信息。注意,?? 制品中包含打包路徑的目錄。
 
3.2 添加步驟;Docker鏡像構(gòu)建

- 添加新的步驟,選擇構(gòu)建并推送至ACR(個(gè)人版)注意配置路徑正確。
 
3.3 添加步驟;郵件通知

- 添加一個(gè)郵件通知的插件,構(gòu)建后會(huì)接收到郵件。
 
4. 構(gòu)建鏡像
4.1 執(zhí)行構(gòu)建

- 點(diǎn)擊運(yùn)行,之后就可以構(gòu)建鏡像了。如果哪個(gè)節(jié)點(diǎn)失敗了,可以點(diǎn)日志查看失敗原因。
 
4.2 構(gòu)建結(jié)果
4.2.1 郵件通知

- 你會(huì)收到一個(gè)來(lái)自云效構(gòu)建的通知郵件。代表著構(gòu)建的結(jié)果。
 
4.2.2 查看鏡像

- 構(gòu)建完成鏡像后,可以進(jìn)入容器鏡像服務(wù)中找到鏡像。地址:https://cr.console.aliyun.com/cn-hangzhou/instance/repositories(opens new window)
 - 之后還可以通過(guò)公網(wǎng)地址拉取鏡像,命令:docker pull registry.cn-hangzhou.aliyuncs.com/fuzhengwei/xfg-dev-tech-aliyun-workbench:1.0.0
 
4.2.3 拉取鏡像

[root@hcss-ecs-decd ~]# docker pull registry.cn-hangzhou.aliyuncs.com/fuzhengwei/xfg-dev-tech-aliyun-workbench:1.0.0 1.0.0: Pulling from fuzhengwei/xfg-dev-tech-aliyun-workbench 1efc276f4ff9: Already exists a2f2f93da482: Already exists 1a2de4cc9431: Already exists d2421c7a4bbf: Already exists 64e0330ea35f: Pull complete 4da07e374896: Pull complete 4f4fb700ef54: Pull complete eb9d0e194679: Pull complete Digest: sha256:a7af08fff4ea0b76184a2fad7e7ca639ab4a9ad16573480b526eda672ed8a483 Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/fuzhengwei/xfg-dev-tech-aliyun-workbench:1.0.0 registry.cn-hangzhou.aliyuncs.com/fuzhengwei/xfg-dev-tech-aliyun-workbench:1.0.0 [root@hcss-ecs-decd ~]# docker tag registry.cn-hangzhou.aliyuncs.com/fuzhengwei/xfg-dev-tech-aliyun-workbench:1.0.0 fuzhengwei/xfg-dev-tech-aliyun-workbench:1.0.0 [root@hcss-ecs-decd ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE fuzhengwei/xfg-dev-tech-aliyun-workbench 1.0.0 df740ba425bb 24 minutes ago 221MB
- 鏡像構(gòu)建完成后,就可以在云服務(wù)器上拉取鏡像了。
 - 好啦,到這你就可以愉快的完善了,前端構(gòu)建鏡像也是一樣的操作。
 
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
 docker容器調(diào)用yum報(bào)錯(cuò)的解決辦法
在本篇文章里小編給大家分享的是關(guān)于docker容器調(diào)用yum報(bào)錯(cuò)的解決辦法,有興趣的朋友們可以參考下。2020-03-03
 用Docker快速構(gòu)建LEMP環(huán)境的方法示例
這篇文章主要介紹了用Docker快速構(gòu)建LEMP環(huán)境的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
 Docker部署Apollo的實(shí)現(xiàn)步驟
眾所周知分布式配置中心在目前也可以說(shuō)是企業(yè)中項(xiàng)目的標(biāo)配了,本文主要介紹了Docker 部署Apollo的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
 Docker如何修改正在運(yùn)行的容器的時(shí)區(qū)和時(shí)間
在Docker容器中修改時(shí)區(qū)和時(shí)間的步驟:1. 進(jìn)入容器,使用dockerexec命令以root用戶身份進(jìn)入,2. 安裝時(shí)區(qū)文件,根據(jù)基礎(chǔ)鏡像選擇合適的包管理器(如apt-get或apk),3. 設(shè)置時(shí)區(qū),通過(guò)創(chuàng)建軟鏈接或設(shè)置環(huán)境變量TZ,并更新系統(tǒng)時(shí)區(qū)2025-01-01
 Docker環(huán)境下的Apache NiFi安裝實(shí)踐及遇到問(wèn)題解決方案
由于最近用到數(shù)據(jù)同步,故打算采用中間件工具來(lái)做數(shù)據(jù)同步,誰(shuí)知第一步部署Apache NiFi環(huán)境就耽擱了好久,其中遇到一些問(wèn)題,故記錄下來(lái)部署成功記錄,下面給大家詳細(xì)介紹Docker環(huán)境下的Apache NiFi安裝實(shí)踐及遇到問(wèn)題解決方案,感興趣的朋友一起看看吧2025-05-05
 Docker部署SpringBoot項(xiàng)目,本地運(yùn)行正常,部署至服務(wù)器報(bào)錯(cuò)zip file close
這篇文章主要介紹了Docker部署SpringBoot項(xiàng)目,本地運(yùn)行正常,部署至服務(wù)器報(bào)錯(cuò)zip file closed問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
 Docker安裝mysql教程以及解決mysqld: Can‘t read dir&nbs
本文詳細(xì)介紹了如何通過(guò)Docker來(lái)安裝和配置MySQL數(shù)據(jù)庫(kù),包括拉取MySQL鏡像、啟動(dòng)MySQL容器、配置MySQL、解決常見(jiàn)錯(cuò)誤等步驟,提供了詳盡的命令和參數(shù)說(shuō)明,幫助用戶順利完成MySQL的安裝和配置,文中還提到了如何處理MySQL容器啟動(dòng)時(shí)遇到的“無(wú)法讀取目錄”2024-10-10

