docker

2021-06-07  本文已影响0人  hehehehe
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
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

上一篇下一篇

猜你喜欢

热点阅读