上一篇笔记1.Docker - 初使用 主要介绍了Docker
的安装以及一个简单的运行例子,本次笔记主要通过具体的实例来介绍一些Docker
镜像以及容器的基本操作
1.目标
之前的毕设owllook是用python
编写的,我将它开源在github
上,正借此机会,将其制作成Docker
镜像,以便部署
本次笔记就以此项目为中心,目标是将该项目制作成Docker
镜像,并从过程中一步步熟悉Docker
2.定制镜像
上一篇笔记中说了,镜像是由一系列指令一步一步构建出来,但是,最初的镜像我们还是需要从镜像仓库获取,比如owllook
基于python3.6
,那么我第一步便是从镜像仓库获取python
镜像
运行命令:docker pull python:3.6
稍等片刻,就会拉取一个python3.6
的镜像下来,让我们以这个镜像为基础来启动一个容器:
# 具体可参考 dcker run --help 来了解详细命令
docker run -it --rm python:3.6 python
# 终端会有如下输出 此时进入了容器中的3.6环境
Python 3.6.2 (default, Jul 24 2017, 19:47:39)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
# 也可以直接进入容器
docker run -it --rm python:3.6
有了基础镜像,下面我们有两种方案构建owllook
镜像:
- 使用
docker commit
命令 Dockerfile
(使用此方案)
Dockerfile内容如下:
# 基于python3.6镜像来构建owllook镜像
FROM python:3.6
MAINTAINER howie6879 <howie6879@gmail.com>
RUN apt update -y && apt-get install -y net-tools
# 设置环境变量
ENV APP_ROOT /opt
WORKDIR ${APP_ROOT}/
COPY requirements.txt ${APP_ROOT}/
# 安装依赖
RUN pip install --no-cache-dir --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
COPY . ${APP_ROOT}
WORKDIR ${APP_ROOT}/owllook/
RUN find . -name "*.pyc" -delete
# 启动
CMD ["gunicorn","-c","config/dev_gunicorn.py","--worker-class","sanic.worker.GunicornWorker","server:app"]
构建镜像:
docker build -t owllook:0.1 .
构建成功后,可直接运行,不过针对owllook
这个项目,我设置了几个环境变量,可运行如下命令运行:
# 运行并将docker的8001端口映射到主机的8001
# 在dev_owllook.env里面填上数据库配置 数据库ip需要注意 不得填localhost
docker run --env-file ./dev_owllook.env -d -p 8001:8001 owllook:0.1
仅仅是达到使用Docker
的程度,所花费时间真的不多,所以说Docker
还是很简单方便的,下一步就是上传到镜像仓库。
3.上传镜像
首先请注册Docker Hub账号,然后创建自己的仓库之后,比如这里创建好howie6879/owllook
,随即在终端输入:
# 重新打包下 或者改下tag也没问题
docker build -t howie6879/owllook:0.1 .
# 根据提示登录
docker login
docker push howie6879/owllook:0.1
稍等即大功告成
4.最后
现在可以根据Dockerfile
自己构建owllook
镜像或者直接docker pull owllook
镜像,确实十分方便