当前位置: 首页 > news >正文

Docker 的打包及基本使用

Docker 的打包及基本使用

Docker 的打包是将应用程序及其依赖项封装到一个容器中,以便在任何支持 Docker 的环境中运行。

本教程将详细介绍如何通过 Dockerfile 打包应用程序,并基本使用 Docker 容器。

Docker 打包

创建 Dockerfile

Dockerfile 是一个文本文件,包含了一系列指令,用于自动化构建 Docker 镜像。

以下是一个典型的 Dockerfile 示例:

# 使用 Python 3.9 作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用程序代码
COPY . .

# 暴露端口
EXPOSE 8000

# 设置启动命令
CMD ["python3", "app.py"]
关键指令说明:
  • FROM:指定基础镜像。
  • ENV:设置环境变量。
  • RUN:执行命令(例如安装依赖)。
  • WORKDIR:设置工作目录。
  • COPY:将文件从主机复制到容器中。
  • EXPOSE:暴露容器端口。
  • CMD:设置容器启动时执行的命令。

构建 Docker 镜像

Dockerfile 所在目录下创建requirements.txtapp.py

app.py内容如下:

from flask import Flask

# 创建 Flask 应用
app = Flask(__name__)

# 定义路由
@app.route('/')
def hello():
    return "Hello, Docker!"

# 启动应用
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

requirements.txt 内容如下:

Flask==2.3.2

并运行以下命令构建镜像

docker build -t my-app .
  • -t my-app:为镜像指定一个名称(标签)。
  • .:指定 Dockerfile 所在的目录(当前目录)。

验证镜像

构建完成后,可以通过以下命令查看本地镜像:

docker images

如果看到 my-app 镜像,说明构建成功。

Docker 基本使用

运行容器

使用构建的镜像运行容器:

docker run -d -p 8000:8000 --name my-app-container my-app
  • -d:以守护进程模式运行容器。
  • -p 8000:8000:将主机的 8000 端口映射到容器的 8000 端口。
  • --name my-app-container:为容器指定一个名称。
  • my-app:使用的镜像名称。

查看容器日志

查看容器的日志输出:

docker logs my-app-container

进入容器

如果需要进入容器进行调试,可以使用以下命令:

docker exec -it my-app-container /bin/bash

停止和删除容器

停止容器:

docker stop my-app-container

删除容器:

docker rm my-app-container

总结

通过本教程,你已经学会了如何使用 Dockerfile 打包应用程序,并使用 Docker 容器。

Docker 的打包和使用是现代化应用部署的核心技能,掌握这些知识可以帮助你更高效地管理和运行应用。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。

相关文章:

  • 力扣-二叉树-257 二叉树的所有路径
  • LKT4202UGM新一代安全认证加密芯片,守护联网设备和服务安全
  • 小结:OSPF的网络类型,LSA
  • 扣子工作流中禁止同类别的图像流节点,不能超过4个
  • R语言学习计划启动
  • 14、deepseek视觉大模型Janus Pro本地部署及实战
  • 【AI系列】从零开始学习大模型GPT (2)- Build a Large Language Model (From Scratch)
  • C# ASP.NET的未来发展趋势
  • ElasticSearch基础和使用
  • SOUI基于Zint生成Code 2 of 5码
  • (5/100)每日小游戏平台系列
  • Vue3(1)
  • 探索顶级汽车软件解决方案:驱动行业变革的关键力量
  • Create Deploy Your Website Quickly - Docusaurus GitHub Pages
  • 2.14学习记录
  • 28、深度学习-自学之路-NLP自然语言处理-做一个完形填空,让机器学习更多的内容程序展示
  • DeepSeek 引领AI新潮流:Janus-Pro 打破多模态理解与生成的边界
  • 探索Hugging Face:开源AI社区的核心工具与应用实践
  • 【Xposed】在 Android Studio 中使用 Kotlin DSL 自动结束并启动应用进程
  • Zabbix告警队列清理教程
  • 一揽子十条货币政策措施出炉:降准降息,设立五千亿服务消费与养老再贷款
  • 山东莒县农商银行去年收入、利润下降,资本充足率等指标增长
  • 马上评|独生子女奖励不能“私了”,政府诚信是第一诚信
  • 南方地区强降雨或致部分河流发生超警洪水,水利部部署防范
  • 证券时报头版:巴菲特留给投资界的珍贵启示
  • 五一假期,新任杭州市委书记刘非到嘉兴南湖瞻仰红船