美文网首页
002-Dockerfile定制镜像并提交阿里docker re

002-Dockerfile定制镜像并提交阿里docker re

作者: 霄峰 | 来源:发表于2017-03-01 17:56 被阅读64次

说明:
环境Ubuntu 16.04 LTS x64
Docker version 17.03.2-ce
你要有一个AliYun的帐号(https://aliyun.com),没有的请自行注册
本文以Dockerfile安装nginx为例,将安装好的镜像提交到阿里云docker registry

第一步:在指定目录下创建Dockerfile文件

mkdir scort #这里自定义
cd scort
touch Dockerfile #创建这个文件,只能是这个文件名!在这个文件中写入要定制安装的镜像!

Dockerfile内容-本文以安装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

# 执行主进程
CMD ["nginx", "-g", "daemon off;"]

第二步:构建镜像[在 Dockerfile 文件所在目录执行]

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

参数说明:
-t :指定要创建的目标镜像名
. :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

参数说明:
-p 8080:80:将容器的80端口映射到主机的8080端口
-d 后台运行

其它参数:
--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中拉取使用你的镜像

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

登录阿里云docker registry的用户名是您的阿里云账号全名,密码是您开通namespace时设置的密码。
你可以在镜像管理首页点击右上角按钮修改docker login密码。

  1. 打标签
#$ 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 #打标签
  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:[镜像版本号]

参数:
格式:sudo docker push registry.cn-beijing.aliyuncs.com/[命名空间名]/[镜像名]:[镜像版本号]
命名空间名:是你在Aliyun创建的命名空间名
镜像名:是你在Aliyun创建的镜像名
镜像版本号:sudo docker images本地查到的


这里的镜像地址为registry.cn-beijing.aliyuncs.com/scort/ubuntu16.04-nginx,你可能会不明白;这是阿里云docker registry地址,现在就来创建一个:

登录AliYun控制台后 => 容器镜像服务


创建命名空间 这里的名称就是你的`命名空间名`,可自定义,在本例中就填写`scort`;后期下拉、提交要与之对应!
镜像仓库
创建镜像仓库
选择本地仓库
创建成功后会看到使用方法

相关文章

网友评论

      本文标题:002-Dockerfile定制镜像并提交阿里docker re

      本文链接:https://www.haomeiwen.com/subject/coccgttx.html