一、构建自己的ecentos镜像

1、Docker Hub中99%的镜像都是从基础镜像 scratch 开始的,然后在这个基础上构建。

2、创建一个自己的centos镜像

(1)在宿主机下创建一个dockerfile文件夹

(2)编写一个dockerfile脚本

  解析:

  第一行:继承centos基础镜像

  第二行:添加作者信息

  第三行:设置环境变量

  第四行:设置工作路径即环境变量位置

  第五行:安装vim(dockerhub发布的centos并没有vim编辑器)

  第五行:安装网络工具

  第六行:暴露80端口

  第七、八行:打印环境变量和结束信息

  第九行:进入到bash命令行下进行交互

         DockerFile练习之构建自己的镜像_centos

 

 

(3)构建一个镜像

  命令:docker build -f mydockefile -t mycentos .

   DockerFile练习之构建自己的镜像_bash_02

  查看镜像。

  DockerFile练习之构建自己的镜像_环境变量_03

 

   镜像已经构建成功。

 

(4)通过自己创建的镜像运行容器,并验证其功能。

   DockerFile练习之构建自己的镜像_Docker_04

 

   其默认工作路径直接进入到 /usr/local下了,centos默认是直接进入到根目录下的,需要添加/bin/bash来指定工作目录。

   可以正常使用vim命令。

   ifconfig指令也可以正常运行

        DockerFile练习之构建自己的镜像_centos_05

   这表明自己制作的centos镜像成功。

  

(5)查看镜像的制作历史。

  命令:docker history 镜像id或者镜像名  。

  可以看到详细列举出来的变更历史,即可以知道镜像是怎么制作的。

      DockerFile练习之构建自己的镜像_环境变量_06

 

  

3、CMD和ENTRYPOINT的区别

(1)CMD。当在运行容器实例的时候,如果需要添加命令操作,CMD定义的指令被运行时添加的指令替换掉。

(2)ENTRYPOINT。当运行容器实例的时候,如果需要添加命令操作,ENTRYPOINT支持直接追加命令。

  dockerfile中很多命令都很相似,需要仔细对比。

 

4、实际项目中可以通过添加压缩包、依赖文件等方式来构建镜像。

 

 

二、发布自己构建的镜像

1、发布信息到dockerhub

(1)在dockerhub注册账号

(2)先登录dockerhub

  命令:docker login -u 账户名 -p 密码

   DockerFile练习之构建自己的镜像_Docker_07

 

 (3)提交镜像

  push的时候要带上作者信息、版本信息。

     DockerFile练习之构建自己的镜像_环境变量_08

 

   提交的时候也是按照层级来提交的。

 

 2、发布到阿里云镜像仓库

(1)登录阿里云

(2)找到容器镜像服务,并创建创建命名空间。

DockerFile练习之构建自己的镜像_centos_09

 

 

(3)创建镜像仓库

DockerFile练习之构建自己的镜像_docker_10

 

 

镜像仓库中的信息

 

DockerFile练习之构建自己的镜像_centos_11

 

 

 

(4)发布自己的镜像到阿里云仓库。(可参考官方文档)

  先登录:

DockerFile练习之构建自己的镜像_centos_12

 

 

  发布自己的镜像

        DockerFile练习之构建自己的镜像_bash_13

 

 

  疑问:为什么push失败了???是权限的原因么

  DockerFile练习之构建自己的镜像_docker_14

 

 

  

 

 

  

 

1、编写DockerFile脚本

1、scratch。基础镜像
2、docker history 镜像id #查看镜像的构建历史
3、登录DockerHub
  docker login -u 账户名 -p密码
4、
  docker push 镜像名
5、docker tag 镜像id 镜像名:版本 #给镜像重新命名、和版本信息。