DockeFIile知识点总结和发布自己的镜像( 二 )


ARG:用于指定传递给构建运行时的变量

#格式
ARG name
ARG name=valuue
#如
ARG site
ARG name=123
ONBUILD:用于设置镜像触发器
#格式
ONBUILD [INSTRUCTION]
#如
ONBUILD ADD ./App
#当所构建的镜像被用作其它镜像的基础镜像,该镜像中的触发器会被触发
实战:定制自己的 centos
由于官方centos里没有vim ,ficonfig等工具,先来个简单点的学习一下,从打包到发布的流程,后面再构建Nginx,php,mysql,redis各自的dockerfile文件,搭建自己的开发环境 !
编写dockerfile文件
#dockerfile文件如下
FROM centos #基础镜像
#MAINTANER 123 123@gmail.com 现在官方推荐使用 LABEL标签使用
LABEL maintaner=123@gmail.com
#设置环境变量
ENV PATH=/usr/local
#设置工作目录
WORKDIR $PATH
#创建容器时执行的命令
RUN yum install -y vim && yum -y net-tools
#暴露端口
EXPOSE 80
# 镜像构建完成后执行的命令
CMD echo "===success======="
#以/bin/bash运行
CMD /bin/bash
通过dockerfile构建镜像
#使用命令 docker build 命令
#常用参数如下:
-f #指定dockerfile文件
-t #指定镜像标签
#打包命令如下,注意最后那个点别丢了,代表当前目录
docker bulid -f mydockerfile -t mycentos:1.0 .

DockeFIile知识点总结和发布自己的镜像

文章插图
 
查看镜像构建的过程,可以使用docker history 镜像id来查看
#查看一下nginx的构建过程
docker history nginx

DockeFIile知识点总结和发布自己的镜像

文章插图
 
发布自己的镜像
发布地址: Dockerhub,阿里云
 
发布到Dokerhub上
  1. 注册账号并登录
  2. 在服务器上向Dockerhub提交
#使用 docker login 命令登录
#使用 docker push 发布镜像
使用 docker login -u 用户名 -p 密码
登录成功如下:

DockeFIile知识点总结和发布自己的镜像

文章插图
 
使用 docker push 命令发布镜像到dockerhub,结果报错
denied: requested access to the resource is denied
#解决办法:
在build自己的镜像的时候添加tag时必须在前面加上自己的dockerhub的username,然后再push就可以了
#我这里使用 docker tag 命令修改标签
#命令如下:
docker tag mycentos:1.0 lnssm/mycentos:1.0
#再push就可以了
docker push lnssm/mycentos:1.0
发布到阿里云,国内速度快
  1. 登录阿里云控制台
  2. 搜索容器镜像服务->实例列表->个人实例->命令空间新建

DockeFIile知识点总结和发布自己的镜像

文章插图
 
创建完命名空间后,打开镜像仓库,创建镜像仓库,选择本地仓库
DockeFIile知识点总结和发布自己的镜像

文章插图
 
根据官方给的文档开始提交就可以,这里就不截图了




推荐阅读