zoukankan      html  css  js  c++  java
  • 镜像上传和Dockerfile

    一.镜像上传

    1.在https://hub.docker.com 注册一个账号

    2.创建一个仓库

    3.取到containerID

    #docker ps
    

      

    4.commit容器

    #docker commit {containerID} rorshach/nginx:v1
    

      

    5.登录hub docker

    #docker login
    

      

    ps:
    输入账密

    6.push镜像:

    #docker push rorshach/nginx:v1

    7.push完成后就可以在hub.docker.com中看到你的镜像了

    二.Dockerfile

    1.常用指令:
    (1).FROM
    指定基础镜像,必须放在Dockerfile第一行,表示从哪个镜像构建

    如:FROM centos
    FROM scratch // 表示从空白镜像开始构建

    (2).RUN
    执行命令
    a.shell 格式: RUN <命令>
    如:

    RUN echo 'hello world' > /usr/share/nginx/html/index.html
    

      

    b.exec 格式: RUN ["可执行文件", "参数1", "参数2"]
    如:

    RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz"

    每一个 RUN 的行为,就和刚才我们手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
    对于多个命令,我们可以使用&&将命令串联起来

    RUN 命令1 && 命令2 && 命令3
    

      

    (3).CMD
    功能为容器启动时要运行的命令,不会创建新的镜像层
    格式为以下三种:

    CMD ["executable","param1","param2"]
    CMD ["param1","param2"]
    CMD command param1 param2
    

      

    如:

    CMD nginx -g 'daemon off;'
    

      

    (4).ADD 和 COPY
    可以将本地的文件复制到容器中
    格式:

    COPY <src>... <dest>
    COPY ["<src>",... "<dest>"]
    

      

    ADD可以是远程文件,但COPY只能是本地文件;相当于scp;只是免账密

    (5).EXPOSE
    指定镜像程序将会在哪个端口提供服务,可以通过docker inspect <container-id>指令检索出来,EXPOSE指令实际上只是一个约定,需要在docker run 发布时以-p标志的方式暴露,上述的是小写的p需要指定主机到到虚拟到主机端口之间的映射,而大写的P是将镜像中的端口暴露到主机的随机端口,具体暴露到哪个端口可以通过docker ps查看.
    如:
    EXPOSE 80

    (6).MAINTAINER(可选)
    指定作者
    如:
    MAINTAINER 作者

    (7).ENV
    用于配置环境变量
    如:
    ENV JAVA_HOME=/opt/jdk-9

    示例Dockerfile文件:

    # base image
    FROM centos:7
    # MAINTAINER
    MAINTAINER rorshach rorshach@mail.com
    
    RUN yum update && rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm && yum install -y nginx
    CMD nginx -g 'daemon off;' #镜像启动后运行nginx
    
    EXPOSE 80
    

      


    2.构建

    #docker build -t <镜像名称> <目录> -f <Dockerfile文件名>


    如果Dockerfile的文件名为Dockerfile,则-f可以省略

  • 相关阅读:
    Sublime Text 3 快捷键汇总
    jquery远程引用地址大全
    我的网站以后要如何设计
    word中特殊符号的替换
    如何有效地提升JavaScript 水平?
    HTML5坦克大战(2)绘制坦克复习
    JavaScript中的对象冒充
    让年轻程序员少走弯路的14个忠告
    ASCII
    可以用旋转法绘制平行四边形
  • 原文地址:https://www.cnblogs.com/itfenqing/p/10151532.html
Copyright © 2011-2022 走看看