docker

作者: hehehehe | 来源:发表于2021-06-07 20:29 被阅读0次
    FROM:

    定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

    RUN:

    用于执行后面跟着的命令行命令,Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大

    FROM centos
    RUN yum install wget
    RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
    RUN tar -xvf redis.tar.gz
    以上执行会创建 3 层镜像。可简化为以下格式:
    FROM centos
    RUN yum install wget \
        && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
        && tar -xvf redis.tar.gz
    

    以 && 符号连接命令,这样执行后,只会创建 1 层镜像

    COPY
    COPY hom* /mydir/
    COPY hom?.txt /mydir/
    
    ADD

    ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)

    CMD
    • CMD 在docker run 时运行。
    • RUN 是在 docker build。
      如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
      CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
    ENTRYPOINT

    类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

    ENV

    设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

    docker  run --name zadata100 --rm  -v /home/data/:/tmp  --privileged=true -d  
    zqdeal:v1.0.3  /tmp/zq-deal/zq_data/xaj    /tmp/zq-deal/wh/result-10.sql
    
    FROM python:3.8.3-buster  
    WORKDIR /home/workdir  
    COPY requirements.txt ./requirements.txt  
    RUN python3 -m pip install -r requirements.txt -i [http://mirrors.aliyun.com/pypi/simple](http://mirrors.aliyun.com/pypi/simple) --trusted-host [mirrors.aliyun.com](http://mirrors.aliyun.com)  
    COPY . ./  
    ENTRYPOINT ["python","/tmp/zq-deal/zq_deal.py"]
    
    
    FROM python:3.8.5-buster
    
    RUN pip install crypto pycrypto psycopg2-binary loguru fastapi uvicorn
    
    EXPOSE 80
    
    RUN mv /usr/local/lib/python3.8/site-packages/crypto /usr/local/lib/python3.8/site-packages/Crypto
    
    COPY . /app
    workdir /app
    CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
    
    
    #docker build -t myimage .
    #docker run -it 390754d6f105 /bin/bash 以交互模式运行容器 进入镜像
    #docker exec -it 7701d90d6d62 /bin/bash 在运行的容器中执行命令 进入容器
    #docker ps -a
    #docker rmi image_id
    #docker rm container_id
    #docker run -d --name mycontainer -p 81:80 myimage
    #http://127.0.0.1:81/poi/poi_decript?id=1
    #docker stop container_id
    
    

    相关文章

      网友评论

          本文标题:docker

          本文链接:https://www.haomeiwen.com/subject/tmlreltx.html