一、构建自己的ecentos镜像
1、Docker Hub中99%的镜像都是从基础镜像 scratch 开始的,然后在这个基础上构建。
2、创建一个自己的centos镜像
(1)在宿主机下创建一个dockerfile文件夹
(2)编写一个dockerfile脚本
解析:
第一行:继承centos基础镜像
第二行:添加作者信息
第三行:设置环境变量
第四行:设置工作路径即环境变量位置
第五行:安装vim(dockerhub发布的centos并没有vim编辑器)
第五行:安装网络工具
第六行:暴露80端口
第七、八行:打印环境变量和结束信息
第九行:进入到bash命令行下进行交互
(3)构建一个镜像
命令:docker build -f mydockefile -t mycentos .
查看镜像。
镜像已经构建成功。
(4)通过自己创建的镜像运行容器,并验证其功能。
其默认工作路径直接进入到 /usr/local下了,centos默认是直接进入到根目录下的,需要添加/bin/bash来指定工作目录。
可以正常使用vim命令。
ifconfig指令也可以正常运行
这表明自己制作的centos镜像成功。
(5)查看镜像的制作历史。
命令:docker history 镜像id或者镜像名 。
可以看到详细列举出来的变更历史,即可以知道镜像是怎么制作的。
3、CMD和ENTRYPOINT的区别
(1)CMD。当在运行容器实例的时候,如果需要添加命令操作,CMD定义的指令被运行时添加的指令替换掉。
(2)ENTRYPOINT。当运行容器实例的时候,如果需要添加命令操作,ENTRYPOINT支持直接追加命令。
dockerfile中很多命令都很相似,需要仔细对比。
4、实际项目中可以通过添加压缩包、依赖文件等方式来构建镜像。
二、发布自己构建的镜像
1、发布信息到dockerhub
(1)在dockerhub注册账号
(2)先登录dockerhub
命令:docker login -u 账户名 -p 密码
(3)提交镜像
push的时候要带上作者信息、版本信息。
提交的时候也是按照层级来提交的。
2、发布到阿里云镜像仓库
(1)登录阿里云
(2)找到容器镜像服务,并创建创建命名空间。
(3)创建镜像仓库
镜像仓库中的信息
(4)发布自己的镜像到阿里云仓库。(可参考官方文档)
先登录:
发布自己的镜像
疑问:为什么push失败了???是权限的原因么
1、编写DockerFile脚本
1、scratch。基础镜像
2、docker history 镜像id #查看镜像的构建历史
3、登录DockerHub
docker login -u 账户名 -p密码
4、
docker push 镜像名
5、docker tag 镜像id 镜像名:版本 #给镜像重新命名、和版本信息。