zoukankan      html  css  js  c++  java
  • docker创建image方法以及常用指令介绍

    docker -help    # 显示帮助
    docker COMMAND -help    # 帮助信息更详细
    docker start “容器名称”    # 启动一个或多个容器
    docker stop “容器名称”    # 停止一个或多个运行的容器
    docker images    # 列表docker镜像列表
    docker info    # 显示系统的dokcer信息
    docker ps    # 列表运行的容器
    docker version    # 展示docker的版本信息
    docker rm “CONTAINER ID”    # 删除指定的容器
    docker rmi “CONTAINER ID”    # 删除指定的image
    docker rmi -f “CONTAINER ID”    # 强制删除指定的image
    docker pull “镜像名称”    # 获取docker镜像(从docker hub上获取)
    docker push “images name:tag”    # 推送image到docker hub上(登录后才可以push)
    docker diff “CONTAINER ID”    # 检查容器系统文件的改变
    docker build    # 构建image(在提供Dockerfile的前提下)
    docker login    # 登录docker注册中心(dockerhub)
    docker logout    # 登出docker注册中心
    docker export    # 根据容器id,导出指定压缩文件,(docker export 容器id > test.tar)
    docker import    # 导入容器快照
        从本地文件导入:cat test.tar| docker import - test/demo:v0.1
        从远程文件导入:docker import http://xxx.xxx/domo.tar demo:v0.1
    docker exec    # 运行镜像时执行command指令
        使用方法:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
        domo: docker exec -i -t “CONTAINER ID” /bin/bash
        docker exec的参数:
            --help    # 打印使用方法
            -d(--detach)    # command后台运行
            -e(--env list)    # 设置环境变量
            -i(—interactive)    # 保持打开标准输出,在没有附加参数的情况
            -t(—tty)    # 分配一个伪终端(-t通常和-i一起使用) 
    docker run “images name:tag”    # 在一个新容器中运行一个command
        使用方法:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
             demo : docker run -it “image name:tag” --name “指定一个名称” /bin/bash    # 运行image
        docker run 的参数:
            -p    # 将容器的端口映射到本地
            -i(—interactive)    # 保持打开标准输出,在没有附加参数的情况
            -t(—tty)    # 分配一个伪tty(-t通常和-i一起使用)
            --name        执行一个名称 
     
     
    制作docker镜像有两个方法,一个是使用docker commit;另外一种是使用Dockerfile 
    commit制作image的demo:
    例如:要在image(docker.xxx.me/xxx/onebox-dev:v0.1)上做一个定制的jenkins image,
    1、首先在制作一个docker镜像时需要获取一个基础image
    docker pull docker.xxx.me/xxx/onebox-dev:v0.1    # 获取镜像
    
    2、启动images
    docker run -it —name -p 8080:8080 jenkins docker.xxx.me/xxx/onebox-dev:v0.1 /bin/bash 
    
    3、在浏览器中打开jenkins,访问地址为:http://127.0.0.1:8080,然后根据自己需求配置jenkins,
    4、jenkins配置好后,查看容器的进程,根据容器id检查容器系统中变更的文件,最后提交文件变更,生成一个新的容器
        docker ps    #查看docker容器进程
    
        docker diff “CONTAINER ID”    #查看容器系统中变更的文件(A:新增的文件;C:修改的文件;D:删除的文件)
    
        docker commit -m “备注” 新容器名称:tag    #commit时可以使用-m添加备注,要指定生成的容器的名字以及tag
        docker images    #查看image列表,新生成的image会显示出来    
    Dockerfile制作image的demo:
    首先介绍下Dockerfile的常用指令:
    COPY:复制文件指令;
        格式:COPY <源路径(本地路径)> <目标路径(image中路径)>
        demo:COPY start.sh /root/start.sh
    ADD:ADD和COPY的性质和格式是一样的,ADD新增了一些功能,比如ADD会自动解压被复制的压缩文件,ADD的源路径可以是                   url,ADD会尝试去下载需要的资源;
        格式:ADD <源路径(本地路径)> <目标路径(image中路径)>
        demo:ADD start.tar.gz /root/start.sh
    CMD:容器启动指令,用户可以容器运行时执行CMD命令来代替image中设置的指令;
        shell格式:CMD <shell 命令>
        exec格式:CMD [“可执行文件”,“参数一”,“参数二”。。。]
    ENTRYPOINT:ENTRYPOINT和CMD命令一样,都是指定容器启动程序及参数,ENTRYPOINT也可以在容器运行时替换image内部的指令,需要—entrypoint来指定替换;当指定了ENTRYPOINT时,CMD将不再是可以指定的命令,只是做ENTRYPOINT的一个参数存在;如:ENTRYPOINT "<CMD>”
        格式:ENTRYPOINT [“可执行文件”,“参数一”,“参数二”...]
    ENV:设置环境变量;可以在容器运行和构建过程中使用
        格式:ENV <key> <value>
             ENV <key1>=<value1> <key2>=<value2>...
    ARG:构建参数,只能在image过程中使用
        格式:ARG <参数名>[=<默认值>]
    EXPOSE:声明端口
        格式:EXPOSE <端口号1> <端口号2>
    USER:指定当前用户
        格式:USER <用户名>
    RUN:构建时运行指令
        格式:RUN <指令1>&&<指令2>
    

     例如,现在需要在centos7-java:v1(本地已存在)镜像的基础上使用Dockerfile制作一个image,Dockerfile如下:

    FROM centos7-java:V1
    
    ENV http_port=10001
    
    # 创建data目录,赋予全部权限
    RUN mkdir -p /data/configserver && chmod -R 777 /data/configserver
    
    # 复制编译好的包到镜像中
    COPY magina.tar.gz /data/configserver/magina.tar.gz
    
    # 解压工程文件
    RUN cd /data/configserver && tar -zxvf magina.tar.gz
    
    # 删除工程压缩包
    RUN rm -rf  /data/configserver/magina.tar.gz
    
    # 暴露服务端口号
    EXPOSE ${http_port}
    
    ENTRYPOINT ["/data/configserver/start.sh"]
    进入到Dockerfile文件的目录中,执行构建命令:
    docker build -t image-name:tag .    # 会在终端中输出构建步骤
    最后使用docker images指令查看是否有新生成的image 
    docker build -t image-name:tag .    # 会在终端中输出构建步骤
    最后使用docker images指令查看是否有新生成的image
    

      

     

  • 相关阅读:
    elasticsearch的cross_fields查询
    搭建elk集群 disabled in libcurl elasticsearch-6.2.2 更新license 版本
    elastic mapping not_analyzed 简单理解 + analysis-ik分词器安装
    ElasticsearchException: java.io.IOException: failed to read [id:0, file:/data/elasticsearch/nodes/0/_state/global-0.st]
    elastic 查询案例Query与Filter + 增删改查简单理解 + dynamic mapping + keyword
    kibana 查询例子
    用grok拆分java日志
    logstash 处理信息规律研究
    docker-compose 部署elk+解决时间不对导致kibana找不到logstash定义的index + docker-compose安装
    JavaScript(6):Number对象
  • 原文地址:https://www.cnblogs.com/veitch-623/p/7692242.html
Copyright © 2011-2022 走看看