如何创建自己的docker image并上传到DockerHub上
这里,记录一下比较常用的docker操作细节,对于初次使用者,可能有很大的帮助。
docker作为云计算Paas层面的东西,风靡全世界了,主要是因为它小巧,好用,功能强大。今天主要介绍一下如何依据自己的dockerfile创建image,并将自己的image共享到DockerHub上。方便团队在需要的时候取用。
这里主要是demo,所以,Dockerfile也很简单:
#this is my demo dockerfile FROM ubuntu:14.10
MAINTAINER xxxxx@yyyy.com
ADD script.sh /usr/script/
ENTRYPOINT ["/usr/script/script.sh"]
CMD ["This is a test dockfile out"]
这里的script.sh的内容如下:
#!/bin/bash echo "There are $# parameters provided!" for i in $@
do
echo $i
done
这里,需要注意一点的是,第一行的命令,必须是FROM,比如,将FROM命令放在第二行了,在执行docker build的时候,会报下面的错误:
[root@CloudGame myimage]# docker build -t shihuc/hello:v1 .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon
Step : MAINTAINER xxxx@yyyy.com
Please provide a source image with `from` prior to commit
接着看正常的Dockerfile的build的过程:
[root@CloudGame myimage]# docker build -t shihuc/demo:v1 .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon
Step : FROM ubuntu:14.10
14.10: Pulling from ubuntu
6d370c930acc: Already exists
9a63f1e91c4c: Already exists
74364530838d: Already exists
dce38fb57986: Already exists
ubuntu:14.10: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:6341c688b4b0b82ec735389b3c97df8cf2831b8cb8bd1856779130a86574ac5c
Status: Downloaded newer image for ubuntu:14.10
---> dce38fb57986
Step : MAINTAINER xxxx@yyyy.com
---> Using cache
---> d77b1889ec2b
Step : ADD script.sh /usr/script/
---> Using cache
---> 2d927db27a62
Step : ENTRYPOINT /usr/script/script.sh
---> Using cache
---> 2d0fea5aca3c
Step : CMD This is a test dockfile out
---> Using cache
---> 54b2b27ac4ef
Successfully built 54b2b27ac4ef
现在docker image demo:v1已经创建好了。这个时候就可以共享出去了,共享到DockerHub上去。首先需要有一个DockerHub的帐号,当然,这里,我申请了一个Public的repo,免费的,和GitHub类似,public的免费,private的要钱哟。网址为https://hub.docker.com/
申请好了帐号后,就可以登录了:
[root@CloudGame myimage]# docker login
Username: shihuc
Password:
Email: xxxx@yyyy.com
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded
[root@CloudGame myimage]#
现在,我就将这个docker image demo:v1上传到DockerHub上去:
[root@CloudGame myimage]# docker push shihuc/demo:v1
The push refers to a repository [shihuc/demo] (len: )
54b2b27ac4ef: Image already exists
2d0fea5aca3c: Image already exists
2d927db27a62: Image successfully pushed
d77b1889ec2b: Image already exists
dce38fb57986: Image already exists
74364530838d: Image successfully pushed
9a63f1e91c4c: Image successfully pushed
Digest: sha256:593286981f39efb3e7caa52020645f3f5b2a38f45a8d3ffaa1b4079b5f508a2e
这里有两点要注意哟
1. 必须是在命令行下登录了DockerHub后才能作push操作。这个很容易理解,否则push不知道往那push,这个和git push有点不同,git push到GitHub时,通常是走SSH,这个时候要在github设置Public key,本地会默认用当前用户.ssh下的私钥。而DockerHub是通过用户名密码和邮箱地址来确认用户身份的。
2. 上面push操作的指令中,红色部分,shihuc表示DockerHub上的用户名,demo是repo的名字,v1表示tag号。若在创建docker image的时候,-t选项不是shihuc/demo:v1,而是demo:v1,那么即使用shihuc用户名登录了DockerHub,最后也无法push的,会遇到下面的错误:
[root@CloudGame myimage]# docker push demo:v1
You cannot push a "root" repository. Please rename your repository to <user>/<repo> (ex: shihuc/demo)
而此时,你若根据提示,采用docker push shihuc/demo:v1提交,则会遇到下面的错误:
[root@CloudGame myimage]# docker push shihuc/demo:v1
The push refers to a repository [shihuc/demo] (len: )
Repository does not exist: shihuc/demo
好了,最后看看我们创建的image运行的如何吧,首先默认运行,不加任何参数(结合上面的脚本,分析一下,就可以知道答案是正确的,注意CMD指令后的参数是在一个引号内哟):
[root@CloudGame myimage]# docker run shihuc/demo:v1
There are parameters provided!
This
is
a
test
dockfile
out
再来看看,添加参数的运行结果:
[root@CloudGame myimage]# docker run shihuc/demo:v1 hello docker
There are parameters provided!
hello
docker
这个例子,说明自己创建的image运行一切正常。也可以看出CMD的参数可以被命令行替换,而ENTRYPOINT的参数是不能被替换的。
如何创建自己的docker image并上传到DockerHub上的更多相关文章
- django之创建第10-1个项目-图片上传并记录上传时间
1.百度云盘:django之创建第10-1个项目-图片上传并记录上传时间 2.主要修改的配置文件有3个,forms.views和models3个文件以及html 3.forms.py文件修改 #cod ...
- java web图片上传和文件上传
图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定要写属性enctype=" ...
- 文件上传利器JQuery上传插件Uploadify
在做日常项目中,经常在后台需要上传图片等资源文件,之前使用过几次这个组件,感觉非常好用 ,但是每次使用的时候都是需要经过一番查阅,所以还不如记住在这里,以后使用的时候就翻翻. 他的官方网站如下:htt ...
- Struts2 单个文件上传/多文件上传
1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war 单个文件上传 upload.jsp <s:form action= ...
- 如何通过TortoiseGit(小乌龟)把本地项目上传到github上
1.第一步: 安装git for windows(链接:https://gitforwindows.org/)一路next就好了, 如果遇到什么问题可以参考我另外一篇文章~^ - ^ 2.第二步:安装 ...
- 将项目Demo上传到Github上的操作步骤
之前我有很多代码直接上传到了CSDN上,主要是因为操作方便,今天我就说说将源码Demo上传到Github上的操作步骤. 首先,你要先确定自己在Github上有自己的账户名,账户邮箱和密码.如果没有可以 ...
- Windows下如何将一个文件夹通过Git上传到GitHub上(转)
在通过windows系统的电脑上写代码,需要将项目上传到GitHub上去.比如在Pycharm上写Django后端,整个项目是一个文件夹的形式,那么怎么才能这个文件夹通过Git命令上传到GitHub上 ...
- idea git 把本地项目上传到github上
创建一个项目,在项目文件夹下执行以下命令 第二种方法: 先在idea上创建一个项目 注意以上只是在本地建立了本地仓库,代码都放在本地仓库. 现在上传到github上 到此才上传成功
- 百度Web Uploader组件实现文件上传之分片上传(一)
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件.另外分片传输能够更加实时的跟踪上传进度.多的不说了直接怼代码 前端是三个监听:一个是获取md5,一个是分片,最后一个是合并代码 <! ...
随机推荐
- python+webdriver ppt
一:selenium webdriver的介绍 1.来源,优点,局限性 2.和其他自动化工具对比 3.工作原理 4.组成部分 二:webdriver的api介绍 1.driver 2.元素定位(id, ...
- 【转】Hbase shell 常用命令
不定时更新常用好用命令. --------------------------------------------------------------------------------------- ...
- lost+found目录
If you run fsck, the filesystem check and repair command, it might find data fragments that are not ...
- Python 新手常犯错误(第一部分)
转载自:http://blog.jobbole.com/42706/ 在之前几个月里,我教一些不了解Python的孩子来慢慢熟悉这门语言.渐渐地,我发现了一些几乎所有Python初学者都会犯的错误,所 ...
- Oracle执行语句跟踪(2)——使用10046事件实现语句追踪
接上篇博文Oracle执行语句跟踪(1)--使用sql trace实现语句追踪,一旦我们通过会话追踪获取到超时事物的执行语句,就可以使用10046事件对语句进行追踪. 启用10046事件追踪的方式 S ...
- hdu 5902 Seam Carving
水题,直接上代码了 #include<cstdio> #include<cstring> #include<iostream> #include<cmath& ...
- UIImage加载图片的两种方法区别
Apple官方的文档为生成一个UIImage对象提供了两种方法加载图片: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路 ...
- 2016 MIPT Pre-Finals Workshop Taiwan NTU Contest
2016弱校联盟十一专场10.5 传送门 A. As Easy As Possible 假设固定左端点,那么每次都是贪心的匹配\(easy\)这个单词. 从\(l\)开始匹配的单词,将\(y\)的位置 ...
- kuangbin_ShortPath K (POJ 3159)
很简单的模板题 放在K那么后的位置的原因大概是 光看题意并不是很容易想到是用最短路解吧 奈何kuangbin分在了最短路专题 一发水过 #include <iostream> #inclu ...
- java的nio之:java的nio系列教程之Scatter/Gather
一:Java NIO的scatter/gather应用概念 ===>Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Chann ...