关于docker:docker教程系列三

6次阅读

共计 1692 个字符,预计需要花费 5 分钟才能阅读完成。

导航

  • 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"]

```

实例操作

  1. 当前目录下创立 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)
  2. 当前目录下创立 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"]
  3. 关上终端输出以下命令

     # 命令中参数 -t webimage 指定了镜像的名字为 webimage
     # 这个名字能够用于在之后从镜像启动容器
     # 最初那个 . 用来指定构建镜像时候的工作目录为本机当前目录
     docker build -t webimage .
    
     # 能够应用上面的命令查看本机存储的镜像 (包含下载的和构建的)
     docker images
    
     # 运行容器
     docker run -p 8000:5000 --name demo webimage
  4. 在浏览器输出: localhost:8000
正文完
 0