制作centos基礎(chǔ)鏡像的方法
前言
現(xiàn)在我所在的公司使用的操作系統(tǒng)都是centos7.4版本的, 當(dāng)然應(yīng)用也是部署在centos上面, 那么如果使用docker部署的話, 也自然而然的想到基于centos鏡像來(lái)構(gòu)建自己的應(yīng)用鏡像; 但是centos基礎(chǔ)鏡像與應(yīng)用鏡像之間也可以構(gòu)建一下基礎(chǔ)框架的鏡像, 比如: 基礎(chǔ)JDK鏡像, 基于Python環(huán)境鏡像等等; 相信大家也遇到過(guò), 構(gòu)建了一個(gè)鏡像發(fā)現(xiàn)部署應(yīng)用的時(shí)候打印出來(lái)的中文是亂碼, 日志的時(shí)間顯示的是UTC時(shí)間, 比北京時(shí)間少了8個(gè)小時(shí), 想看某一個(gè)進(jìn)程是否起來(lái)的時(shí)候發(fā)現(xiàn)telnet命令 ps命令 netstat命令不可用, 想要編輯文件的時(shí)候發(fā)現(xiàn)vim命令也不能用; 今天我們就來(lái)看一下如何基于centos鏡像構(gòu)建一個(gè)增強(qiáng)版的centos鏡像;
鏡像倉(cāng)庫(kù)的搭建
在構(gòu)建自己的鏡像之前, 需要有一個(gè)地方能夠存放我們的鏡像便于我們后面使用直接拿來(lái)可以用; 大概有兩種思路: 第一種、在自己的機(jī)器上構(gòu)建, 然后通過(guò)命令 docker save -o xxx.tar.gz xxx-image:v1.0
, 然后上傳到自己的云盤上, 使用的時(shí)候下載到本地, 然后 docker load -i xxx.tar.gz
; 這種方式是沒(méi)問(wèn)題的, 但是就是比較繁瑣(打包,上傳下載,load的時(shí)候還要找到目錄神馬的); 第二種、創(chuàng)建自己的一個(gè)docker image registry, 對(duì)于本地構(gòu)建的鏡像 只需要重新 tag一下, docker push即可完成;下載的時(shí)候只需要docker pull就可以了, 全部都可以在命令行上面搞定, 想想都有一種褲褲的感覺;
說(shuō)了這么多, 讓我們一起看一下如何搭建一個(gè)自己的鏡像倉(cāng)庫(kù);(本文中僅僅使用了阿里云的倉(cāng)庫(kù), 建了自己的namespace而已),當(dāng)然也可以自己申請(qǐng)?jiān)浦鳈C(jī), 然后搭建私服都是沒(méi)有問(wèn)題的;
首先登錄阿里云, 然后從服務(wù)中找到容器鏡像服務(wù)所在的位置, 如下圖所示:
點(diǎn)擊容器鏡像服務(wù)進(jìn)入到鏡像倉(cāng)庫(kù)創(chuàng)建界面如下圖
點(diǎn)擊創(chuàng)建, 進(jìn)入到創(chuàng)建倉(cāng)庫(kù)界面
填寫完信息之后, 點(diǎn)擊下一步選擇如何上傳鏡像
因?yàn)槲业男枨缶褪菑谋镜貍}(cāng)庫(kù)構(gòu)建, 不過(guò)我認(rèn)為本地倉(cāng)庫(kù)構(gòu)建是最靈活的一種方式;
創(chuàng)建好鏡像存儲(chǔ)的位置之后, 就可以在本地創(chuàng)建Dockerfile來(lái)構(gòu)建自己的鏡像了;
構(gòu)建centos增強(qiáng)版鏡像
1、首先, 創(chuàng)建Dockerfile文件, 將如下內(nèi)容放入文件中
FROM centos MAINTAINER terry.king "1575639478@qq.com" # 定義時(shí)區(qū)參數(shù) ENV TZ=Asia/Shanghai RUN ls -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone # 設(shè)置編碼 RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 ENV LC_ALL "zh_CN.UTF-8" # 安裝基礎(chǔ)yum包 RUN yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel patch net-tools iproute telnet bind-utils wget kde-l10n-Chinese glibc-common
2、登錄阿里云Docker Registry
sudo docker login --username=你的阿里云賬號(hào) registry.cn-shenzhen.aliyuncs.com
用于登錄的用戶名為阿里云賬號(hào)全名,密碼為開通服務(wù)時(shí)設(shè)置的密碼。
您可以在產(chǎn)品控制臺(tái)首頁(yè)修改登錄密碼。就是第二張創(chuàng)建鏡像倉(cāng)庫(kù)按鈕的左邊設(shè)置registry登錄密碼
3、構(gòu)建鏡像并將鏡像推送到Registry
$ docker build -t terrylmay/centos . $ docker tag terrylmay/centos registry.cn-shenzhen.aliyuncs.com/terrylmay/centos:[鏡像版本號(hào)] $ docker push registry.cn-shenzhen.aliyuncs.com/terrylmay/centos:[鏡像版本號(hào)]
默認(rèn)的鏡像版本號(hào)為latest
總結(jié)
這樣在構(gòu)建應(yīng)用鏡像的時(shí)候就可以解決序言中提到的一系列問(wèn)題了. 方便自己快速構(gòu)建自己的應(yīng)用鏡像;
相關(guān)文章
linux環(huán)境下安裝mysql8.0過(guò)程介紹
大家好,本篇文章主要講的是linux環(huán)境下安裝mysql8.0過(guò)程介紹,感興趣的同學(xué)趕快來(lái)看一看,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12apache虛擬主機(jī)中設(shè)置泛域名解析的方法
apache虛擬主機(jī)中設(shè)置泛域名解析,主要是用到ServerAlias 的配置,供大家學(xué)習(xí)參考2013-02-02Linux運(yùn)維基礎(chǔ)交換分區(qū)和lvm管理教程
這篇文章主要介紹了Linux運(yùn)維基礎(chǔ)中的交換分區(qū)和lvm管理教程,附含源碼示例,有需要的朋友可以借鑒參考下,祝大家共同學(xué)習(xí)共同進(jìn)步2021-09-09ubuntu16.04自動(dòng)設(shè)置行號(hào)的步驟詳解
這篇文章主要介紹了ubuntu16.04自動(dòng)設(shè)置行號(hào)的步驟,文中給大家提到了Ubuntu vi設(shè)置行號(hào)的方法,感興趣的朋友跟隨腳本之家小編一起看看吧2018-08-08