002-Dockerfile定制鏡像并提交阿里docker registry

說明:
環(huán)境Ubuntu 16.04 LTS x64
Docker version 17.03.2-ce
你要有一個AliYun的帳號(https://aliyun.com),沒有的請自行注冊
本文以Dockerfile安裝nginx為例,將安裝好的鏡像提交到阿里云docker registry

第一步:在指定目錄下創(chuàng)建Dockerfile文件

mkdir scort #這里自定義
cd scort
touch Dockerfile #創(chuàng)建這個文件,只能是這個文件名!在這個文件中寫入要定制安裝的鏡像!

Dockerfile內(nèi)容-本文以安裝nginx為例

FROM    ubuntu:16.04
MAINTAINER      Fisher  "469306621@qq.com"

RUN     apt-get update \
        && apt-get install -y  nginx \
        && apt-get autoremove -y

# 聲明端口,這里只是一個聲明
EXPOSE  80

# 執(zhí)行主進(jìn)程
CMD ["nginx", "-g", "daemon off;"]

第二步:構(gòu)建鏡像[在 Dockerfile 文件所在目錄執(zhí)行]

sudo docker build -t scort/ubuntu16.04-nginx:v1.0.1 .

參數(shù)說明:
-t :指定要創(chuàng)建的目標(biāo)鏡像名
. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑

查看鏡像

$ sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
scort/ubuntu16.04   v1.0.1              d340d1006b9e        39 seconds ago      197 MB
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116 MB

第三步:使用鏡像運行容器

$ sudo docker run -p 8080:80 -d scort/ubuntu16.04:v1.0.1

d182720b3379ee564fc6aae9b976b30d06f9d30ced2aae0edf1d7c8b1cdad608

查看容器

$ sudo docker ps

CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                  NAMES
d182720b3379        scort/ubuntu16.04:v1.0.1   "nginx -g 'daemon ..."   8 seconds ago       Up 6 seconds        0.0.0.0:8080->80/tcp   nervous_northcutt

參數(shù)說明:
-p 8080:80:將容器的80端口映射到主機(jī)的8080端口
-d 后臺運行

其它參數(shù):
--name mynginx:將容器命名為mynginx
-v $PWD/www:/www:將主機(jī)中當(dāng)前目錄下的www掛載到容器的/www
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:將主機(jī)中當(dāng)前目錄下的nginx.conf掛載到容器的/etc/nginx/nginx.conf
-v $PWD/logs:/wwwlogs:將主機(jī)中當(dāng)前目錄下的logs掛載到容器的/wwwlogs

$PWD 是變量當(dāng)前目錄的意思

效果

第四步:將做好的鏡像提交到阿里云docker registry遠(yuǎn)程鏡像(分3步完成)
提交到阿里云docker registry遠(yuǎn)程鏡像后其它人可以從阿里云docker registry中拉取使用你的鏡像

  1. 登錄阿里云docker registry
#登錄阿里云docker registry
$ sudo docker login --username=ap5335y2b@aliyun.com registry.cn-beijing.aliyuncs.com 

登錄阿里云docker registry的用戶名是您的阿里云賬號全名,密碼是您開通namespace時設(shè)置的密碼。
你可以在鏡像管理首頁點擊右上角按鈕修改docker login密碼。

  1. 打標(biāo)簽
#$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/scort/test:[鏡像版本號]

$ sudo docker tag scort/ubuntu16.04:v1.0.1 registry.cn-beijing.aliyuncs.com/scort/ubuntu16.04-nginx:v1.0.1 #打標(biāo)簽
  1. 將鏡像推送到阿里云docker registry
# $ sudo docker push registry.cn-beijing.aliyuncs.com/[命名空間名]/[鏡像名]:[鏡像版本號]
$ sudo docker push registry.cn-beijing.aliyuncs.com/scort/ubuntu16.04-nginx:v1.0.1

The push refers to a repository [registry.cn-beijing.aliyuncs.com/scort/ubuntu16.04-nginx]
339e6a7a2371: Pushed 
3db5746c911a: Layer already exists 
819a824caf70: Layer already exists 
647265b9d8bc: Layer already exists 
41c002c8a6fd: Layer already exists 
v1.0.1: digest: sha256:3d377bbac3d257f2e35d159d15061d34d864bb87a047a63477babd5dfd3cdfd9 size: 1362

鏡像推送到`阿里云docker registry`

你還可以從registry中拉取鏡像:

$ sudo docker pull registry.cn-beijing.aliyuncs.com/scort/scort/ubuntu16.04-nginx:[鏡像版本號]

參數(shù):
格式:sudo docker push registry.cn-beijing.aliyuncs.com/[命名空間名]/[鏡像名]:[鏡像版本號]
命名空間名:是你在Aliyun創(chuàng)建的命名空間名
鏡像名:是你在Aliyun創(chuàng)建的鏡像名
鏡像版本號:sudo docker images本地查到的


這里的鏡像地址為registry.cn-beijing.aliyuncs.com/scort/ubuntu16.04-nginx,你可能會不明白;這是阿里云docker registry地址,現(xiàn)在就來創(chuàng)建一個:

登錄AliYun控制臺后 => 容器鏡像服務(wù)


創(chuàng)建命名空間 這里的名稱就是你的`命名空間名`,可自定義,在本例中就填寫`scort`;后期下拉、提交要與之對應(yīng)!

鏡像倉庫

創(chuàng)建鏡像倉庫

選擇本地倉庫

創(chuàng)建成功后會看到使用方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容