如何创建自己的docker image并上传到DockerHub上

docker作为云计算Paas层面的东西,风靡全世界了,主要是因为它小巧,好用,功能强大。今天主要介绍一下如何依据自己的dockerfile创建image,并将自己的image共享到DockerHub上。方便团队在需要的时候取用。

 

这里主要是demo,所以,Dockerfile也很简单:

1 #this is my demo dockerfile
2 
3 FROM ubuntu:14.10
4 MAINTAINER xxxxx@yyyy.com
5 ADD script.sh /usr/script/
6 ENTRYPOINT ["/usr/script/script.sh"]
7 CMD ["This is a test dockfile out"]

这里的script.sh的内容如下:

1 #!/bin/bash
2 
3 echo "There are $# parameters provided!"
4 
5 for i in $@
6 do
7    echo $i
8 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 0 : MAINTAINER xxxx@yyyy.com
Please provide a source image with `from` prior to commit

接着看正常的Dockerfile的build的过程:

 1 [root@CloudGame myimage]# docker build -t shihuc/demo:v1 .
 2 Sending build context to Docker daemon 3.072 kB
 3 Sending build context to Docker daemon 
 4 Step 0 : FROM ubuntu:14.10
 5 14.10: Pulling from ubuntu
 6 6d370c930acc: Already exists 
 7 9a63f1e91c4c: Already exists 
 8 74364530838d: Already exists 
 9 dce38fb57986: Already exists 
10 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.
11 Digest: sha256:6341c688b4b0b82ec735389b3c97df8cf2831b8cb8bd1856779130a86574ac5c
12 Status: Downloaded newer image for ubuntu:14.10
13  ---> dce38fb57986
14 Step 1 : MAINTAINER xxxx@yyyy.com
15  ---> Using cache
16  ---> d77b1889ec2b
17 Step 2 : ADD script.sh /usr/script/
18  ---> Using cache
19  ---> 2d927db27a62
20 Step 3 : ENTRYPOINT /usr/script/script.sh
21  ---> Using cache
22  ---> 2d0fea5aca3c
23 Step 4 : CMD This is a test dockfile out
24  ---> Using cache
25  ---> 54b2b27ac4ef
26 Successfully built 54b2b27ac4ef

现在docker image demo:v1已经创建好了。这个时候就可以共享出去了,共享到DockerHub上去。首先需要有一个DockerHub的帐号,当然,这里,我申请了一个Public的repo,免费的,和GitHub类似,public的免费,private的要钱哟。网址为https://hub.docker.com/

申请好了帐号后,就可以登录了:

1 [root@CloudGame myimage]# docker login
2 Username: shihuc
3 Password: 
4 Email: xxxx@yyyy.com
5 WARNING: login credentials saved in /root/.docker/config.json
6 Login Succeeded
7 [root@CloudGame myimage]# 

现在,我就将这个docker image demo:v1上传到DockerHub上去:

 1 [root@CloudGame myimage]# docker push shihuc/demo:v1
 2 The push refers to a repository [shihuc/demo] (len: 1)
 3 54b2b27ac4ef: Image already exists 
 4 2d0fea5aca3c: Image already exists 
 5 2d927db27a62: Image successfully pushed 
 6 d77b1889ec2b: Image already exists 
 7 dce38fb57986: Image already exists 
 8 74364530838d: Image successfully pushed 
 9 9a63f1e91c4c: Image successfully pushed  
10 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的,会遇到下面的错误:

1 [root@CloudGame myimage]# docker push demo:v1
2 You cannot push a "root" repository. Please rename your repository to <user>/<repo> (ex: shihuc/demo)

而此时,你若根据提示,采用docker push shihuc/demo:v1提交,则会遇到下面的错误:

1 [root@CloudGame myimage]# docker push shihuc/demo:v1
2 The push refers to a repository [shihuc/demo] (len: 1)
3 Repository does not exist: shihuc/demo

 

好了,最后看看我们创建的image运行的如何吧,首先默认运行,不加任何参数(结合上面的脚本,分析一下,就可以知道答案是正确的,注意CMD指令后的参数是在一个引号内哟):

1 [root@CloudGame myimage]# docker run shihuc/demo:v1
2 There are 1 parameters provided!
3 This
4 is
5 a
6 test
7 dockfile
8 out

再来看看,添加参数的运行结果:

1 [root@CloudGame myimage]# docker run shihuc/demo:v1 hello docker
2 There are 2 parameters provided!
3 hello
4 docker

这个例子,说明自己创建的image运行一切正常。也可以看出CMD的参数可以被命令行替换,而ENTRYPOINT的参数是不能被替换的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将镜像上传到Docker Hub,需要执行以下步骤: 1. 首先,您需要在Docker Hub上创建一个账号。如果您已经有账号,请跳过此步骤。 2. 在本地计算机上构建您的Docker镜像。确保您已经为该镜像指定了唯一的名称和标签。 3. 使用Docker命令行工具登录到Docker Hub。您可以使用以下命令: docker login 然后,输入您的Docker Hub用户名和密码。 4. 将您的镜像推送到Docker Hub。您可以使用以下命令: docker push <镜像名称> 例如,如果您的镜像名称为myimage,您可以使用以下命令: docker push myimage 5. 等待镜像上传完成。上传完成后,您可以在Docker Hub上找到您的镜像。 注意:在上传镜像之前,请确保您已经为该镜像指定了唯一的名称和标签。如果您没有为镜像指定标签,Docker将使用默认标签“latest”。如果您上传了多个具有相同名称但不同标签的镜像,Docker Hub将只保留最新的镜像。 ### 回答2: 要将镜像上传到Docker Hub,首先需要一个Docker Hub账号。在Docker Hub上创建一个账号后,可以使用命令行界面来完成镜像上传过程。 首先,打开终端或命令行界面,使用Docker登录到Docker Hub。输入以下命令并按Enter键: ``` docker login ``` 然后会提示输入Docker Hub账号和密码,输入正确的信息后按Enter键即可成功登录。 接下来,在上传之前,需要给镜像打上标签(tag)。可以使用以下命令: ``` docker tag <镜像ID> <用户名>/<镜像名称>:<标签> ``` 其中,<镜像ID>是要上传的镜像的唯一标识符,<用户名>是Docker Hub账号的用户名,<镜像名称>是要给镜像起的名称,<标签>是可以自定义的标签,常用的有版本号等。 然后,使用以下命令将已标记的镜像上传到Docker Hub: ``` docker push <用户名>/<镜像名称>:<标签> ``` 这将会将镜像上传到Docker Hub,并显示上传进度和状态。 上传完成后,可以在Docker Hub上查看到已上传的镜像,并与他人共享使用。记住,上传的镜像将会公开可见,所以确保不上传敏感或私有的镜像。 以上就是使用命令行界面将镜像上传到Docker Hub的步骤。希望对你有所帮助! ### 回答3: 要上传镜像到Docker Hub,首先需要在Docker Hub上创建一个帐户。在创建帐户后,我们需要在本地电脑上安装Docker引擎,并在命令行中登录到Docker Hub帐户。 接下来,我们需要为要上传的镜像创建一个本地标签。可以使用"docker tag"命令将镜像与Docker Hub的仓库关联起来。例如,可以使用以下命令创建一个名为"myimage"的本地标签: ``` docker tag <IMAGE_NAME> <USERNAME>/<REPOSITORY_NAME>:<TAG> ``` 其中,<IMAGE_NAME>是本地镜像的名称,<USERNAME>是Docker Hub的用户名,<REPOSITORY_NAME>是将要创建或使用的仓库名称,<TAG>是可选的镜像标签。如果不指定标签,默认使用"latest"作为标签。 然后,使用"docker push"命令将标签上传到Docker Hub仓库。例如,可以使用以下命令将镜像上传到Docker Hub: ``` docker push <USERNAME>/<REPOSITORY_NAME>:<TAG> ``` 该命令将会执行上传操作,并将镜像传输到Docker Hub的仓库中。上传完成后,可以在Docker Hub的仓库页面中查看和管理已上传的镜像。 在操作完成后,可以使用"docker rmi"命令删除本地的镜像标签,以节省本地存储空间。例如,可以使用以下命令删除本地标签: ``` docker rmi <USERNAME>/<REPOSITORY_NAME>:<TAG> ``` 以上就是将镜像上传到Docker Hub的步骤。通过这些步骤,我们可以方便地将本地构建的镜像分享给其他人或在不同的环境中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值