【Docker】5. Dockerfile 构建和管理容器化应用程序

🛫 导读

开发环境

版本号 描述
文章日期 2023-12-15
操作系统 Win10 - 22H2 22621.2715
WSL 2
Docker Desktop 4.26.0

1️⃣ Dockerfile介绍

Dockerfile 是 Docker 的核心组成部分之一,它是一个文本文件,用于定义构建 Docker 镜像。

使用流程:
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run运行镜像
4、docker pull 发布镜像

基本语法

语法说明:
1、每个保留关键字(指令)都是必须是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每个指令都会创建提交一个新的镜像层,并提交

指令

Dockerfile 的基本结构由一系列的指令组成,每个指令都以大写字母开头,并且可以有参数。下面是一些常用的 Dockerfile 指令:

  • FROM:指定基础镜像,例如 FROM ubuntu:latest 表示以最新的 Ubuntu 镜像作为基础。
  • RUN:在容器中执行命令,例如 RUN apt-get update && apt-get install -y python3 表示在容器中更新软件源并安装 Python 3。
  • COPY:将文件从主机复制到容器中,例如 COPY app.py /app/ 表示将主机上的 app.py 文件复制到容器中的 /app/ 目录。
  • WORKDIR:设置工作目录,例如 WORKDIR /app 表示将容器的工作目录设置为 /app。
  • EXPOSE:声明容器要暴露的端口,例如 EXPOSE 8000 表示容器将会监听端口 8000。
  • CMD:定义容器启动时要执行的命令,例如 CMD ["python3", "app.py"] 表示在容器启动时执行 python3 app.py

形象的表示:
在这里插入图片描述

2️⃣ 实战:Python 的 Flask Web

代码

文中代码地址: https://gitcode.net/kinghzking/MyOpen/-/tree/master/course/Docker/5-Dockerfile

Dockerfile代码如下:

# 使用官方 Python 3 镜像作为基础镜像
FROM python:3

# 设置工作目录
WORKDIR /app

# 将当前目录下的 requirements.txt 复制到容器中
COPY requirements.txt .

# 安装应用程序依赖项
RUN pip install --no-cache-dir -r requirements.txt

# 将当前目录下的所有文件复制到容器中的 /app 目录
COPY ./src .

# 暴露容器的端口
EXPOSE 5000

# 定义环境变量
ENV FLASK_APP=app.py

# 运行应用程序
CMD ["flask", "run", "--host=0.0.0.0"]


requirements.txt代码如下:

flask

app.py代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()


编译运行

  1. build
    docker buildx build . -t my-python-flask-web:1.0
    注意build之后的 .,否则会报错:ERROR: "docker buildx build" requires exactly 1 argument.
  1. run
    docker run --name my-python-flask-web -p 5000:5000 my-python-flask-web:1.0
  • –name 指定 容器名字
  • -p 绑定端口
    界面操作:
    在这里插入图片描述
  1. 如果再次启动,使用 start 命令
    docker start my-python-flask-web
  1. 本地打开页面http://127.0.0.1:5000/
    在这里插入图片描述

发布到服务器

有点像git,先提交,在push
docker tag my-python-flask-web:1.0 kinghz/my-python-flask-web:1.0
docker push kinghz/my-python-flask-web:1.0
在这里插入图片描述
稍等片刻,即可完成发布,在docker上可以查看到信息
在这里插入图片描述

🛬 文章小结

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件。
Docker镜像逐渐成为企业交付的标准,非常需要学习。

📖 参考资料

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 09:02:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 09:02:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 09:02:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 09:02:01       20 阅读

热门阅读

  1. Docker可视化管理工具docker.ui的搭建

    2023-12-17 09:02:01       48 阅读
  2. RecyclerView中的设计模式解读

    2023-12-17 09:02:01       42 阅读
  3. linux修复SSL/TLS协议信息泄露漏洞(CVE-2016-2183)

    2023-12-17 09:02:01       48 阅读
  4. 串口通信(5)-C#串口通信数据接收不完整解决方案

    2023-12-17 09:02:01       40 阅读
  5. Kubernetes Pod 网段与主机内网网段互通

    2023-12-17 09:02:01       43 阅读
  6. 基于SpringBoot和微信小程序的校园快递平台系统

    2023-12-17 09:02:01       45 阅读
  7. Ansible运行临时命令

    2023-12-17 09:02:01       41 阅读
  8. Ansible设置主机清单

    2023-12-17 09:02:01       37 阅读
  9. 加州数据集介绍

    2023-12-17 09:02:01       37 阅读
  10. 安卓免Root做klipper上位机教程

    2023-12-17 09:02:01       57 阅读