您好,登錄后才能下訂單哦!
前言
現在我所在的公司使用的操作系統都是centos7.4版本的, 當然應用也是部署在centos上面, 那么如果使用docker部署的話, 也自然而然的想到基于centos鏡像來構建自己的應用鏡像; 但是centos基礎鏡像與應用鏡像之間也可以構建一下基礎框架的鏡像, 比如: 基礎JDK鏡像, 基于Python環境鏡像等等; 相信大家也遇到過, 構建了一個鏡像發現部署應用的時候打印出來的中文是亂碼, 日志的時間顯示的是UTC時間, 比北京時間少了8個小時, 想看某一個進程是否起來的時候發現telnet命令 ps命令 netstat命令不可用, 想要編輯文件的時候發現vim命令也不能用; 今天我們就來看一下如何基于centos鏡像構建一個增強版的centos鏡像;
鏡像倉庫的搭建
在構建自己的鏡像之前, 需要有一個地方能夠存放我們的鏡像便于我們后面使用直接拿來可以用; 大概有兩種思路: 第一種、在自己的機器上構建, 然后通過命令 docker save -o xxx.tar.gz xxx-image:v1.0
, 然后上傳到自己的云盤上, 使用的時候下載到本地, 然后 docker load -i xxx.tar.gz
; 這種方式是沒問題的, 但是就是比較繁瑣(打包,上傳下載,load的時候還要找到目錄神馬的); 第二種、創建自己的一個docker image registry, 對于本地構建的鏡像 只需要重新 tag一下, docker push即可完成;下載的時候只需要docker pull就可以了, 全部都可以在命令行上面搞定, 想想都有一種褲褲的感覺;
說了這么多, 讓我們一起看一下如何搭建一個自己的鏡像倉庫;(本文中僅僅使用了阿里云的倉庫, 建了自己的namespace而已),當然也可以自己申請云主機, 然后搭建私服都是沒有問題的;
首先登錄阿里云, 然后從服務中找到容器鏡像服務所在的位置, 如下圖所示:
點擊容器鏡像服務進入到鏡像倉庫創建界面如下圖
點擊創建, 進入到創建倉庫界面
填寫完信息之后, 點擊下一步選擇如何上傳鏡像
因為我的需求就是從本地倉庫構建, 不過我認為本地倉庫構建是最靈活的一種方式;
創建好鏡像存儲的位置之后, 就可以在本地創建Dockerfile來構建自己的鏡像了;
構建centos增強版鏡像
1、首先, 創建Dockerfile文件, 將如下內容放入文件中
FROM centos MAINTAINER terry.king "1575639478@qq.com" # 定義時區參數 ENV TZ=Asia/Shanghai RUN ls -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone # 設置編碼 RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 ENV LC_ALL "zh_CN.UTF-8" # 安裝基礎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=你的阿里云賬號 registry.cn-shenzhen.aliyuncs.com
用于登錄的用戶名為阿里云賬號全名,密碼為開通服務時設置的密碼。
您可以在產品控制臺首頁修改登錄密碼。就是第二張創建鏡像倉庫按鈕的左邊設置registry登錄密碼
3、構建鏡像并將鏡像推送到Registry
$ docker build -t terrylmay/centos . $ docker tag terrylmay/centos registry.cn-shenzhen.aliyuncs.com/terrylmay/centos:[鏡像版本號] $ docker push registry.cn-shenzhen.aliyuncs.com/terrylmay/centos:[鏡像版本號]
默認的鏡像版本號為latest
總結
這樣在構建應用鏡像的時候就可以解決序言中提到的一系列問題了. 方便自己快速構建自己的應用鏡像;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。