zoukankan      html  css  js  c++  java
  • docker命令,使用经验



    一、安装

    https://www.cnblogs.com/yunmuq/p/14768401.html#34-安装doker



    二、使用命令

    先了解概念,镜像和容器:

    用run启动镜像后,就会生成一个容器

    镜像文件不会被改写,还能用于启动其它容器

    每个容器启动时会指定命令,容器停止后,可以使用start再启动,start不能指定命令

    一般的用法是:

    • 后台启动,容器中运行一个服务,如http服务器等,再通过接口访问。不是调试一般不会去连容器的shell

    • 前台启动,运行一串命令后输出结果,退出

    
    # 安装镜像
    docker pull
    
    # 查看可使用的镜像
    docker images
    
    # 查看正在运行的容器
    docker ps
    
    # 查看所有容器,包括停止的
    docker ps -a
    
    # 重命名镜像
    docker tag <id> new_name:new_tag
    docker tag old_name:old_tag new_name:new_tag
    
    # 查看镜像/容器的元数据,为json格式
    docker inspect
    # 获取指定数据,用-f,后接Go模板
    docker inspect -f {{.ContainerConfig.Cmd}}
    
    # 短暂地启动镜像,执行命令后终止
    # 镜像名:标签,标签可省略
    docker run hello-world:lastest cmd
    
    # 交互式地启动镜像
    # -i交互式,-t终端,/bin/bash是命令,调用容器bash,exit退出,容器停止
    # 也可以不用命令,默认会用/bin/bash或/bin/sh,具体看dockerfile中写的啥
    docker run -it ubuntu /bin/bash
    
    # 注意,第一次启动镜像需要用run,使用-d参数能后台运行容器,就能一直运行
    docker run -itd --name ubuntu-test ubuntu /bin/bash
    
    # 端口映射
    启动时 -p 宿主port:容器port
    或 -P 随机映射
    
    # 启动已停止的容器、停止容器
    docker start <id>
    docker stop <id>
    docker restart <id>
    
    # 进入容器
    docker attach <id>     # 退出容器停止
    docker exec -it <id> /bin/bash    # 退出容器不会停止
    
    # 删除容器
    docker rm -f <id>
    
    # 删除所有终止状态的容器
    docker container prune
    
    # 删除镜像
    docker rmi -f <id>
    



    三、Dockerfile

    参考:https://www.runoob.com/docker/docker-dockerfile.html

    一个基本的Dockerfile结构大致如下

    FROM alpine
    ### FROM,最重要的命令,指定基于什么镜像构建
    
    # LABEL,标签,键值都能随意指定,无影响
    LABEL maintainer="xxx.xxx@xxx.com"
    LABEL description="Alpine based image with apache2 and php7."
    
    # ARG,不常用,定义构建过程中的变量
    ARG version=1.1
    
    # ENV,不常用,定义构建过程中,以及构建完成的镜像的后续使用过程中的环境变量
    ENV python=/usr/bin/python
    
    # COPY <源路径> <容器内路径>
    COPY ./app /home/app
    
    # ADD,不常用,和COPY相近,还能从网络url中添加,但推荐用COPY
    ADD . /
    
    ### RUN,重要且必须,指定如何构建镜像
    # 可以用shell格式,也可以用数组格式
    # 每个RUN都会套一层,意思是第二个RUN会在第一个RUN的基础上再构建一个镜像,可以理解为第二个RUN from 第一个RUN的结果
    # 建议只有一个RUN,非必要的RUN会造成镜像肿大
    RUN apk --no-cache --update 
        add apache2 
        php7-apache2
    
    # EXPOSE,暴露一个端口,后续docker run —P时,随机映射端口会参考这个
    EXPOSE 80
    
    ### CMD,重要且必须,设置后续 docker run 镜像时运行的命令
    # 可以用shell格式,也可以用数组格式
    # 一般最后一个命令用来阻塞,方便 docker run 后不立即退出,否则需要 docker run 时手动阻塞
    CMD tail -f -s 30 /dev/null
    

    CMD也可以是调用一个脚本,事先COPY进去

    构建镜像:docker build

    如果Dockerfile名字不是Dockerfile,可以用-f指定



  • 相关阅读:
    浅谈prufer编码
    数据结构训练之三
    博弈论训练之一
    动态规划训练之十三
    杂题训练之七
    奇技淫巧训练之八
    浅谈博弈论
    浅谈卡特兰数
    奇技淫巧训练之七
    浅谈概率期望的一些例题
  • 原文地址:https://www.cnblogs.com/yunmuq/p/15503281.html
Copyright © 2011-2022 走看看