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
网友评论