天天看点

docker使用小记

  最近在做一些接口,需要使用docker打包发布。

  接口的内容不多,文件结构也不复杂,使用的是Flask框架开发的。

  一、Docker file

  docker打包需要一个Dockerfile,指挥怎么打包怎么运行。

  使用了一个简单的Dockerfile模板

FROM python:3.7.5
RUN mkdir /code
COPY requirements.txt /code
COPY config.py /code
COPY run.py /code
RUN pip install -r /code/requirements.txt
WORKDIR /code
CMD ["python3","run.py"]      

  这里是一个只有两个文件的项目,需要的依赖库都在requirements.txt中。执行方式为 python3 run.py

  运行一段时间发现我的服务器时钟不对,需要同步一下时间,增加了以下代码

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone      

   这一段放在运行程序之前即可。

二、构建镜像

  代码写好之后,做好Dockerfile,就开始构建镜像,使用docker build镜像。

  在当前文件夹构建一个叫做api-data的镜像,执行命令

docker build -t api-data ./      

 等待命令执行完毕,使用 docker images  可以看到镜像列表中多了一个名为api-data的镜像。

三、docker run

  运行docker容器

  简单的运行命令

docker run -d api-data      

   -d表示后台运行

  我的是flask接口的运行,需要映射端口

docker run -d -p 5000:5000 api-data      

  增加一下重命名和日志文件夹的映射,方便查看文件

docker run -d -p 5000:5000 -v /code/logs:/code/logs --name my-docker-api api-data      

  这个文件夹在构建的时候需要创建,Dockerfile需要增加创建日志文件夹的命令,并在代码中配置将日志文件输出到该处。

docker使用小记
docker使用小记
FROM python:3.7.5
RUN mkdir /code
RUN mkdir /code/logs
COPY requirements.txt /code
COPY config.py /code
COPY run.py /code
RUN pip install -r /code/requirements.txt
WORKDIR /code
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
CMD ["python3","run.py"]      

View Code

  执行成功后,使用 docker ps -a 查看一下运行情况。如果运行有错误可以查看日志排查。

四、推送

  将打包好的docker镜像推送到远端。

  控制版本使用 docker tag  给镜像打标签

docker tag 36ace58ff853 registry.cn-beijing.aliyuncs.com/my-docker-api/api-data:1.0      

   登录远端

docker login --username=myname registry.cn-beijing.aliyuncs.com      

  提示需要输入密码,输入密码即可

  推送

docker push registry.cn-beijing.aliyuncs.com/my-docker-api/api-data:1.0      

这个是使用阿里云搭建的docker镜像仓库,从网站上登录可以看到推送上去的版本。

需要使用的环境,仍使用相应的docker run语句即可运行容器。

贴一下文档

https://docs.docker.com/desktop/