說明:
環(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í)行主進程
CMD ["nginx", "-g", "daemon off;"]
第二步:構建鏡像[在 Dockerfile 文件所在目錄執(zhí)行
]
sudo docker build -t scort/ubuntu16.04-nginx:v1.0.1 .
參數(shù)說明:
-t :指定要創(chuàng)建的目標鏡像名
. :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端口映射到主機的8080端口
-d 后臺運行
其它參數(shù):
--name mynginx
:將容器命名為mynginx
-v $PWD/www:/www
:將主機中當前目錄下的www
掛載到容器的/www
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
:將主機中當前目錄下的nginx.conf
掛載到容器的/etc/nginx/nginx.conf
-v $PWD/logs:/wwwlogs
:將主機中當前目錄下的logs
掛載到容器的/wwwlogs
$PWD
是變量當前目錄的意思
效果
第四步:將做好的鏡像提交到阿里云docker registry
遠程鏡像(分3步完成)
提交到阿里云docker registry
遠程鏡像后其它人可以從阿里云docker registry
中拉取使用你的鏡像
- 登錄
阿里云docker registry
#登錄阿里云docker registry
$ sudo docker login --username=ap5335y2b@aliyun.com registry.cn-beijing.aliyuncs.com
登錄阿里云docker registry
的用戶名是您的阿里云賬號全名,密碼是您開通namespace時設置的密碼。
你可以在鏡像管理首頁點擊右上角按鈕修改docker login密碼樊零。
- 打標簽
#$ 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 #打標簽
- 將鏡像推送到
阿里云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控制臺后 => 容器鏡像服務
創(chuàng)建命名空間 這里的名稱就是你的`命名空間名`驻襟,可自定義十性,在本例中就填寫`scort`;后期下拉、提交要與之對應!
鏡像倉庫
創(chuàng)建鏡像倉庫
選擇本地倉庫
創(chuàng)建成功后會看到使用方法