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

docker使用和部署深化学习

1.什么是docker

Docker 容器是一个轻量级、可移植、自给自足的软件环境,用于运行应用程序。

Docker 容器将应用程序及其所有依赖项(包括库、配置文件、系统工具等)封装在一个标准化的包中,使得应用能够在任何地方一致地运行。

容器是操作系统级别的虚拟化,不需要运行完整的操作系统,启动和运行更为高效。

镜像和容器的关系

镜像(Image):容器的静态模板,包含了应用程序运行所需的所有依赖和文件。镜像是不可变的。

容器(Container):镜像的一个运行实例,具有自己的文件系统、进程、网络等,且是动态的。容器从镜像启动,并在运行时保持可变。

2.拉取镜像

2.1 列出当前镜像列表
docker images

可以看到已下载的镜像列表 ,其中 REPOSITORY:表示镜像的仓库源

TAG:镜像的标签

2.2 拉取最新镜像

此处我们以拉取mysql 版本5.7 为例

docker pull mysql:5.7

但是因为墙的关系,上面这个命令是不行的,要加上国内镜像地址:

docker pull docker.1ms.run/mysql:5.7

拉取过程大概这样:

5.7: Pulling from mysql20e4dcae4c69: Pulling fs layer1c56c3d4ce74: Pulling fs layere9f03a1c24ce: Pull complete68c3898c2015: Pull complete6b95a940e7b6: Pull complete90986bb8de6e: Pull completeae71319cb779: Pull completeffc89e9dfd88: Pull complete43d05e938198: Pull complete064b2d298fba: Pull completedf9a4d85569b: Pull completeDigest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bbStatus: Downloaded newer image for docker.1ms.run/mysql:5.7docker.1ms.run/mysql:5.7

3.容器使用以及常用命令

镜像下好了,我们现在来使用他

3.1 此处我们使用mysql镜像来创建一个容器
docker run -d -p 3309:3306 --name mysql_test docker.1ms.run/mysql:5.7 
  • -p 3309:3306 ,宿主机的3309端口 映射到容器里的3306接口,注意位置不能调乱
  • --name  指定容器的名字
  • docker.1ms.run/mysql:5.7 此处是镜像名和版本号
  • -d 后台以守护进程运行 

3.2 使用ubutu 创建一个容器
docker run -it ubuntu:22.04 /bin/bash

-it:通常组合使用,-i (--interactive) 保持 STDIN 打开,-t (--tty) 分配一个伪终端。

用于启动交互式容器(如进入容器内的 shell)

4 dockerfile 和 容器化部署

使用流程通常分为三步:

  • 编写 Dockerfile
  • 执行 docker build 命令构建镜像
  • 使用构建好的镜像运行容器
4.1 例如我们创建非常简单的python应用

1 根目录下 app.py

# app.pyfrom flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world():return 'Hello, Docker World!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

2 在同一目录下,创建一个名为 Dockerfile 的文件(没有扩展名)

# 使用官方 Python 运行时作为父镜像(基础层)FROM python:3.9-slim# 设置工作目录在容器内WORKDIR /app# 将当前目录下的所有文件复制到容器的 /app 目录下COPY . /app# 安装 requirements.txt 中指定的任何需要的包# 假设你有一个 requirements.txt 文件,里面写着 `flask==2.0.1`RUN pip install --no-cache-dir -r requirements.txt# 让容器监听 5000 端口EXPOSE 5000# 定义环境变量ENV NAME World# 在容器启动时运行 app.pyCMD ["python", "app.py"]

3 运行构建命令:

docker build -t my-python-app .

  • docker build: 构建命令。
  • -t my-python-app: -t  选项用于给新镜像指定一个名称和标签,格式是 name:tag。这里只给了名字 my-python-app,标签默认为 latest。
  • 不要忘了最后的这个点(.)非常重要!它指定了 “构建上下文”(build context) 的路径。Docker 守护进程会将这个目录下的所有文件(包括 Dockerfile)打包发送给 Docker 引擎来构建镜像。COPY . /app 命令中的 . 就是指这个上下文路径。

4 构建过程大概是这样子:

Sending build context to Docker daemon  4.096kBStep 1/7 : FROM python:3.9-slim3.9-slim: Pulling from library/python...Step 2/7 : WORKDIR /app...Step 3/7 : COPY . /app...Step 4/7 : RUN pip install --no-cache-dir -r requirements.txt...Step 5/7 : EXPOSE 5000...Step 6/7 : ENV NAME World...Step 7/7 : CMD ["python", "app.py"]...Successfully built 123abc456def # 构建成功的镜像IDSuccessfully tagged my-python-app:latest # 成功打上标签

5 然后就是运行容器:

docker run -p 4000:5000 my-python-app

5 docker部署源码 和 普通部署有什么不一样的地方

特性

Docker部署 (容器化部署)

普通部署 (传统部署)

环境

与应用一起打包,高度一致性

与宿主机强耦合,易出现环境差异

隔离性

进程级别隔离,资源可控,互不影响

进程共享,可能争抢资源,互相冲突

部署单元

**镜像 (Image)**,包含应用及其所有依赖

应用代码 + 配置手册,依赖在目标服务器解决

部署过程

拉取镜像 -> 运行容器,秒级启动

安装依赖 -> 配置环境 -> 部署代码,流程漫长

一致性

极高(开发、测试、生产环境完全一致)

较低(“在我这儿是好的”经典问题)

资源占用

轻量(共享主机内核,仅包含应用所需)

厚重(完整的操作系统,资源开销大)

扩展与迁移

极简且标准(镜像随处运行)

复杂且易出错(需重新配置环境)

http://www.dtcms.com/a/342666.html

相关文章:

  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第一章知识点问答(21题)
  • 华为AUTOSAR质量目标与开发实践
  • LeetCode100 -- Day3
  • 常德二院全栈国产化实践:KingbaseES 数据库的关键作用
  • 机器学习聚类算法学习报告
  • Spring容器Bean的创建流程
  • 使用jwt+redis实现单点登录
  • Matplotlib+HTML+JS:打造可交互的动态数据仪表盘
  • Android - 统一资源标识符 Uri
  • 利用DeepSeek编写调用系统命令用正则表达式替换文件中文本的程序
  • [NCTF2019]True XML cookbook
  • PyTorch Vision 系列:高效数据处理的利器
  • 动手学深度学习(pytorch版):第五章节—深度学习计算(2)参数管理
  • 进程和进程调度
  • Rclone入门对象存储云到云迁移
  • 我从零开始学微积分(2)- 函数与图形
  • YOLO --- YOLOv3以及YOLOv4模型详解
  • Redis Hash数据类型深度解析:从命令、原理到实战场景
  • IPSEC安全基础后篇
  • 易焓仪器安全帽耐熔融金属飞溅性能测试仪:飞溅场景适配与精准检测
  • 力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
  • 智慧农业温室大棚远程监控物联网系统解决方案
  • CRaxsRat v7.4:网络安全视角下的深度解析与防护建议
  • AECS(国标ECALL GB 45672-2025)
  • 5G视频终端详解 无人机图传 无线图传 便携式5G单兵图传
  • 汇总图片拖进ps中 photoshop同时打开几个文件夹
  • 【论文阅读 | TCSVT 2025 | CFMW:面向恶劣天气下鲁棒目标检测的跨模态融合Mamba模型】
  • 深入理解Docker网络:从docker0到自定义网络
  • 设计简洁的Ansible:目前非常流行的开源配置管理和自动化工具
  • webrtc中win端音频---windows Core Audio