前言
没接触docker之前,觉得这个是很悬乎的东西,实践了一把后发现其实还蛮简单的,下面来用实例给大家介绍一下docker是如何部署一个WEB应用的。
ps:关于docker的介绍和安装不在本次分享里哦~同学们可自行补充基础知识。
docker部署前
首先是得有个web应用,我实践的项目是python+flask,目录结构如下:
在部署前,先编写docker file文件,例子如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 基础镜像
FROM python:3.7.2
# 维护者信息
MAINTAINER xxx@qq.com
# 挂载任务服务路径
VOLUME ["/usr/fin/MyFlaskTest", "/usr/fin/MyFlaskTest"]
# 指定工作目录,保持跟挂载路径一致
WORKDIR /usr/fin/MyFlaskTest
# Flask环境参数变量,可自定义变量
ENV FLASK_ENV Dev
# ENV FLASK_DB_KEY 2019011418570114
EXPOSE 8888
# 将依赖包信息加入镜像
COPY requirements.txt ./
# 安装依赖包
RUN pip install -r requirements.txt
# 执行命令启动gunicorn
CMD gunicorn app:app -b 0.0.0.0:8888 -w 2 --preload
创建镜像
1 | 命令: |
进入到服务器web应用目录下,执行创建镜像命令。实例:
1 | [lcpubsudo@sz2-201-5-centos124 MyFlaskTest]$ sudo docker build -t myflask:mock -f dockerfile . |
查看镜像
1 | 命令: |
1 | [lcpubsudo@sz2-201-5-centos124 MyFlaskTest]$ sudo docker images |
创建和启动容器
1 | 命令: |
-d 为后台运行
-p 为指定宿主机端口,不是随机端口
-P 随机端口
-v 挂载目录,宿主机目录:容器目录,路径会自动创建
1 | [lcpubsudo@sz2-201-5-centos124 MyFlaskTest]$ sudo docker run -v /usr/fin/MyFlaskTest:/usr/fin/MyFlaskTest -d -p 8888:8888 myflask:mock |
查看容器运行状态
1 | 命令: |
1 | [lcpubsudo@sz2-201-5-centos124 MyFlaskTest]$ sudo docker ps -a |
查看容器日志
1 | 命令: |
1 | [lcpubsudo@sz2-201-5-centos124 MyFlaskTest]$ sudo docker logs -f 2c801515b3bf |
其他docker命令
- 停止容器
1 | sudo docker stop 容器id |
- 启动容器
1 | sudo docker start 容器id |
- 更新容器内第三方库
1 | 第一步: |
- 删除容器
1 | 先停止容器,再删除 |
- 删除镜像
1 | docker rmi 镜像id |
- 重启容器
1 | docker restart 容器id |
- 查看容器属性工作目录等
1 | docker inspec 容器id |
结束
是不是很简单呀,快去实践一下吧~!