zoukankan      html  css  js  c++  java
  • docker镜像

    1、镜像和容器

    可以在 docker hub网站搜索镜像 https://hub.docker.com/  ,也可以使用 docker search 来搜索镜像

    获取容器镜像

    docker pull ubuntu

    启动容器

      docker run -d -p 8080:8080 ubuntu /bin/bash

    容器必须要有一个运行的服务,否则容器就是stop状态

    镜像和容器的关系

    从 docker hub 上 pull 的都是镜像,可以使用 docker run 或 docker create 将镜像启动为容器

    docker run:等于 docker create + docker start ,将镜像启动为容器并运行容器

    docker create:将镜像启动为容器,但是不会运行容器

    docker start:运行容器

    2、创建新镜像的两种方式

    1. 更新镜像: docker commit

      先把一个镜像启动为容器,对容器做了更改之后,使用docker commit命令生成一个新的镜像

    2. 构建镜像:docker build

      需要创建Dockerfile文件,在最后需要指定路径,当前路径则为 . ,构建镜像时会打包指定路径下的所有文件,所以不要有无用的文件

    Dockerfile格式

    1.文件内容包含
        #注释
        指令(大写) 参数(小写)
    2.构架镜像时,按顺序执行
    3.第一个指令必须是FROM(不包括注释),是为了确定基础镜像

    Dockerfile常用指令

    	# 指定基础镜像,本地没有会从dockerHub pull
    	FROM 
    FROM <image>
    FROM <image>:<tag>
    FROM <image>@<digest>
    
    	# 作者,不推荐使用,即将被废弃
    	MAINTAINER(depreacted)
    MAINTAINER <name>
    
    	# 给镜像指定各种元数据,不会对镜像造成影响
    	LABEL
    LABEL <key>=<value> <key>=<value> ...
    
    	# 从宿主机复制文件到创建的新镜像文件,可以使用通配符
    	COPY
    COPY <from>...<to>
    COPY ["<from>"...."<to>"]
    #如 COPY hom*.txt /mydir/
    
    	# 用法和COPY一样,ADD还支持URL路径,TAR文件会自动解压
    	ADD
    ADD <from>...<to>
    ADD ["<from>"...."<to>"]
    
    	# 为Dockerfile中所有的RUN,CMD,ENTRYPOINT,COPY和ADD设定工作目录,只会影响当前WORKDIR之后的指令
    	WORKDIR
    WORKDIR <dirpath>
     
    	# 用来在镜像中创建挂载点(镜像中没有会创建),随机挂载宿主机上的卷或者其他容器上的卷,使用docker inspect查看宿主机上的挂载路径
    	VOLUME
    VOLUME <mountpoint>	
    VOLUME ["<mountpoint>"]
    
    	# 镜像要暴露的端口,如要使用端口,在执行docker run -p时生效
    	EXPOSE
    
    	# 用来给镜像定义所需的环境变量,并且可以被Dockerfile文件中位于其之后的其他指令(如ENV,ADD,COPY,WORKDIR等)所调用,使用$varname或${varname}
    	ENV
    ENV <key> <value>
    ENV <key>=<value>...
    
    	# 用法同ENV,指定一个变量,可以在docker build创建镜像的时候,使用--build-arg <varname>=<value>来指定参数
    	ARG
    ARG <name>[=<default value>]
    
    	# 指定docker build过程中运行指定的指令
    	RUN
    RUN <command>  
    # <命令行命令> 等同于,在终端操作的 shell 命令
    RUN ["<executable>","<param1>","<param2>"]  
    #RUN ["可执行文件", "参数1", "参数2"]
    # 例如:
    # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
    
    	# 容器启动时运行的命令,如果存在多个 CMD 指令,仅最后一个生效。
    	CMD
    CMD <command>
    CMD ["<executable>","<param1>","<param2>"] 
    CMD ["<param1>","<param2>",...]  # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
    
    	# 在镜像运行为容器后执行的命令,可以写多个,但只有最后一个(CMD和ENTRYPOINT中的一个)会生效
    	ENTRYPOINT
    ENTRYPOINT<command>
    ENTRYPOINT["<executable>","<param1>","<param2>"]
    
    	# 用来在Dockerfile中定义一个触发器,可以使用其他指令,在这个镜像被下一次构建镜像且作为基础镜像时生效
    	ONBUILD
    ONBUILD <instruction>
    

      实例,先创建一个文件夹,里面有构建镜像时的必需文件,创建Dockerfile文件,内容为

    #this is jingxiang
    FROM centos
    ARG myname=yjh
    MAINTAINER $myname
    LABEL author=yjh
    ADD jdk-....tar.gz /usr/local/
    ENV JAVA_HOME=/usr/local/jdk-...
    ENV CLASSPATH=.:$JAVA_HOME/lib
    ENV PATH=$PATH:$JAVA_HOME/bin
    WORKDIR $JAVA_HOME
    RUN yum -y install vim
    VOLUME ["/data"]
    EXPOSE 8080
    CMD ls
    ENTRYPOINT ["java","-version"]
    

      构建镜像: docker build -t mycentos .

  • 相关阅读:
    【0726 | Day 2】编程语言分类/主流编程语言介绍/网络的瓶颈效应
    【0725 | Day 1】计算机编程/计算机组成原理/计算机操作系统
    windows下vue-cli及webpack 构建网站(一)环境安装
    HBuilder 做移动端app流程
    vuejs 学习旅程之 vue-resource
    vuejs 学习旅程一
    身心合一
    td 内容自动换行 table表格td设置宽度后文字太多自动换行
    PhpStorm 2017汉化补丁 2017.1 免费中文版
    PHPStorm2017.1.3永久激活方法之本地破解激活
  • 原文地址:https://www.cnblogs.com/yjh1995/p/12584559.html
Copyright © 2011-2022 走看看