说明:
环境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
中拉取使用你的镜像
- 登录
阿里云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
你还可以从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控制台后 => 容器镜像服务