使用Dockerfile构建镜像并推送Docker hub

虽然Docker Hub上有着大量的镜像,可能会因为各种各样的需求,需要定制适合自身的镜像,结合docker hub可以让你的镜像随时可以通过Docker hub获取

创建Dockerfile文件

$ mkdir ~/mydockerfile
$ cd ~/mydockerfile
$ vim Dockerfile

加入以下行

FROM docker/whalesay:latest  
RUN apt-get -y update && apt-get install -y fortunes  
CMD /usr/games/fortune -a | cowsay  
  • FROM基于那个镜像进行构建
  • RUN在docker镜像载入之前要执行的命令
  • CMD当镜像载入完成时要执行的命令

从Dockerfile中构建镜像

$ docker build -t docker-whale .

在构建的过程Docker执行以上三个步骤,并且把信息打印到终端,首先docker从本地查找docker/whalesay镜像,如果没有则从docker hub中获取,接下来开始执行自定义的命令安装fortunes,当镜像(image)完成载入时执行/usr/games/fortune -a | cowsay

运行新构建的镜像image

新的镜像已经构建成功,可以使用docker images命令来验证是否已经存在该镜像,

$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  
docker-whale        latest              40c25b1a081a        12 minutes ago      274.9 MB  
nginx               latest              4efb2fcdb1ab        5 days ago          183.4 MB  
ubuntu              latest              f8d79ba03c00        2 weeks ago         126.4 MB  
centos              latest              970633036444        4 weeks ago         196.7 MB  
debian              latest              1b01529cc499        4 weeks ago         125.1 MB  
hello-world         latest              c54a2cc56cbb        8 weeks ago         1.848 kB  
docker/whalesay     latest              6b362a9f73eb        15 months ago       247 MB  

接下来运行新的镜像

$ docker run docker-whale

创建Docker hub仓库

注册之后可以在头像的旁边找到,分别由以下几个步骤

1 选择命名空间 (Required)
2 添加仓库 (Required)
3 添加描述
4 添加全描述(支持markdown)
5 设置仓库是否公开

为镜像打标签并推送到Docker Hub

tagger

$ docker tag 7d9495d03763 huangyanxiong2012/docker-whale:latest
  • 使用命令登录Docker Hub
docker login --username=huangyanxiong2012 --email=youremail@company.com  

Flag --email has been deprecated, will be removed in 1.13. 可以忽略

  • 推送镜像到Docker Hub
$ docker push huangyanxiong2012/docker-whale
  • 合并Docker Hub镜像

删除本地本地镜像

$ docker rmi -f huangyanxiong2012/docker-whale

合并Docker镜像

$ docker run huangyanxiong2012/docker-whale
你的欣赏是我最大的动力

Yanxiong Huang

My name is Yanxiong Huang. graduated from Nanyang middle school.Love Linux,familiar with Node.js,Docker,Serverless... and more Web technology.Contact Me:QQ 31356617;Email:huangaynxiong2013@gmail.com

guangzhou,china http://www.myfreax.com

乐在分享