导航
- docker概念
- 手动从镜像运行一个容器
- 应用dockerfile打包镜像
- 应用compose部署多容器利用
- 给docker加上数据长久
- docker在服务器部署
- docker继续集成和部署
应用dockerfile打包镜像
上一篇文章,咱们实现了在一个根底的ubuntu镜像中运行咱们的程序。然而运行程序的过程手动执行行命令式一件很麻烦的事件。接下来咱们又把执行的命令协程了脚本,进步了肯定的效率。然而如果要启动多个容器,咱们的自制脚本每次都要重新安装配置一次这个过程是很耗时的。有没有更简略的方法呢?有的上面介绍dockerfile.
dockerfile介绍
docker 能够让咱们自行编写配置文件(名为Dockerfile)来构建一个镜像,这样咱们就能够轻松地从自定义构建的镜像中启动多个容器, 所以在理论应用中,咱们会把整个程序打包成一个新的docker. 也就是说把所得配置操作,启动运行操作都写到本人的自定义的镜像配置文件中,这样生成的镜像实例(容器)只管运行就好了。不须要额定配置
对于镜像相干的命令
# 能够应用上面的命令查看本机存储的镜像 (包含下载的和构建的) docker images # 删除镜像 docker image rm <webimage> or docker rmi -f <webimage> # 构建镜像, -t示意镜像的名字和标签,.代表以后的工作目录 docker build -t webimage .
应用dockerfile构建的镜像启动容器
上面是对dockerfile文件中内容的解释```dockerfile # 在dockerfile文件中 #是正文 # FROM用于指定构建镜像应用的根底镜像 FROM ubuntu:18.04 # RUN 用于在构建镜像的时候在镜像中执行命令 # 这里咱们装置python3 和 flask web 框架 RUN apt update RUN apt -y install python3 python3-pip RUN pip2 insatll flask # COPY 相当于命令的 docker cp # 把本机当前目录下的app.py文件拷贝到镜像的 /code/app.py # 和docker cp 不同的是, COPY 会主动创立镜像中不存在的目录, 比方/code COPY app.py /code/app.py # WORKDIR 用于指定从镜像启动的容器内的工作目录 WORKDIR /code # CMD 用于指定容器运行后要执行的命令和参数列表 # 这样从本镜像启动容器后会主动执行 python3 app.py 这个命令 # 因为咱们曾经用WORDKDIR指定了容器的工作目录 # 所以以下的命令都是在 /code 下执行的 CMD ["python3", "app.py"]```
实例操作
当前目录下创立app.py文件
# app.py from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello from Dockerfile' if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
当前目录下创立Dockerfile文件
FROM ubuntu:18.04 RUN apt update RUN apt -y install python3 python3-pip RUN pip3 install flask # 因为应用了docker build -t webimage . # 指明了镜像的工作目录是当前目录 COPY app.py /code/app.py WORKDIR /code CMD ["python3", "app.py"]
关上终端输出以下命令
# 命令中参数 -t webimage 指定了镜像的名字为 webimage # 这个名字能够用于在之后从镜像启动容器 # 最初那个 . 用来指定构建镜像时候的工作目录为本机当前目录 docker build -t webimage . # 能够应用上面的命令查看本机存储的镜像 (包含下载的和构建的) docker images # 运行容器 docker run -p 8000:5000 --name demo webimage
- 在浏览器输出: localhost:8000