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

Docker入门教程:在腾讯云轻量服务器上部署你的第一个容器化应用 (2025)

更多云服务器知识,尽在hostol.com

“在我电脑上明明是好的啊!”

这句话,是不是堪称程序员“甩锅”排行榜第一名的金句?当你辛辛苦苦开发完一个应用,把它交给同事或者部署到服务器上时,却发现因为它依赖的某个函数库版本不对、或者操作系统的配置有差异,程序压根就跑不起来。那种挫败感,足以摧毁一个美好的下午。

环境不一致,就是那个永远潜伏在开发与运维之间、制造了无数麻烦的“幽灵”。

那么,有没有一种方法,能把我的应用程序,连同它运行所需的所有环境(比如特定版本的Python、所有的依赖库、所有的配置文件),像制作一个“爱心便当”一样,完美地打包在一起?这个“便当盒”本身就是一个隔离的、干净的迷你操作系统。无论我把这个“便当”带到谁的电脑上,或者哪台服务器上,只要对方安装了“微波炉”(也就是Docker环境),就能一键“加热”,百分之百地还原出和我电脑上一模一样的、热气腾腾的饭菜(应用程序)。

有!这个神奇的“便当盒”制作技术,就是Docker。而Docker,就是那位来消灭“环境不一致”这个幽灵的“捉鬼天师”。

拆解“魔法便当盒”:Docker的三大核心概念

在动手之前,我们必须先花三分钟,用大白话理解Docker的三个核心“零件”。

  1. 镜像 (Image): 这就是制作“便当”的**“菜谱和配料清单”**。它是一个只读的模板,详细地记录了制作某个特定便当(比如“宫保鸡丁便当”)需要哪些米饭、哪些鸡肉、哪些配菜(应用程序和依赖库),以及制作的先后顺序。
  2. 容器 (Container): 这就是根据菜谱,做出来的、那个热气腾腾的、可以吃的“便当”本身。镜像是静态的模板,而容器是动态的、正在运行的实例。你可以用同一份“宫保鸡丁”菜谱(镜像),做出无数份一模一样的“宫保鸡丁便当”(容器)。每个便当(容器)都是独立、隔离的。
  3. 仓库 (Repository): 这就是存放各种“菜谱”(镜像)的**“巨型线上菜谱图书馆”**。其中最大、最官方的那个,叫Docker Hub。你可以从里面找到几乎所有流行软件的官方菜谱,比如Nginx、MySQL、Python等等。

理解了这三点,我们就可以开始制作我们的第一个“便当”了。

第一步:准备“厨房”——在腾讯云上请一位“自带厨具”的大厨

我们首先需要一个装好了全套“厨具”(Docker环境)的“厨房”(服务器)。而腾讯云的轻量应用服务器,为我们提供了一个极其方便的“作弊”选项。

  1. 登录腾讯云,进入轻量应用服务器的购买页面。
  2. 选择地域和配置。 对于学习Docker来说,最便宜的2核4G配置,就已经绰绰有余。
  3. 关键一步:选择镜像! 在“镜像”这一栏,不要选择常规的操作系统(比如Ubuntu或CentOS)。请点击**“应用镜像”,然后在下方的列表或搜索框里,找到“Docker CE”**。
    • 这是什么意思? 这意味着,你下单购买的这台服务器,腾讯云在把它交给你之前,就已经帮你把最新、最稳定的Docker环境,连同所有相关的工具,全都预装好了。
    • 比喻一下: 这就像你买的不是一套毛坯房,而是一套已经通好了水电煤、并且配备了全套德国进口厨具的“精装公寓”。你只需要拎包入住,直接开始“做菜”就行了。

选中Docker CE镜像,完成支付。一两分钟后,你的“顶级厨房”就已经在云端准备就绪了。

第二步:“叮!微波炉加热”——运行你的第一个Nginx容器

现在,我们已经有了一个装好Docker的服务器。让我们来小试牛刀,从“菜谱图书馆”(Docker Hub)里,拿一份最简单的“Nginx官方菜谱”,来加热一份“Nginx网站便当”。

1登录你的服务器。 在腾讯云后台找到你服务器的IP地址和密码,通过SSH登录进去。

2验证Docker是否就位。 在命令行输入:

Bash

docker --version

如果你看到一串版本号信息,说明你的“厨具”工作正常。

念出咒语,启动Nginx! 在命令行里,输入下面这行命令,然后回车:

Bash

docker run -d -p 8080:80 --name my-first-nginx nginx

别怕,我们来拆解一下这行“咒语”:

命令执行后,你会看到Docker开始下载镜像,然后返回一长串字符,代表你的容器已经成功启动了!

见证奇迹的时刻:

现在,打开你本地电脑的浏览器,在地址栏输入:http://你的服务器IP地址:8080,然后回车。

如果你看到了那个经典的**“Welcome to nginx!”**页面,那么,请为你自己鼓掌!你已经成功地启动了你人生中第一个Docker容器。你已经掌握了“热别人做好的便当”的技能。

第三步:成为“大厨”——亲手打包一个属于你自己的应用

热别人的便当固然方便,但真正的乐趣,在于亲手制作属于自己的“独家私房菜”。现在,我们就来把一个我们自己写的、极简的Python网站,打包成一个Docker镜像,并运行起来。

1准备“食材”。 我们先创建一个项目目录,并在里面创建两个文件。

Bash

mkdir my-hello-app
cd my-hello-app

创建Python应用文件 app.py

Bash

nano app.py

在里面输入以下内容:

Python

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, Docker! 这是我亲手打包的应用!'if __name__ == '__main__':app.run(debug=True, host='0.0.0.0')

创建依赖清单 requirements.txt

Bash

nano requirements.txt

在里面只写一行:

Flask==2.0.1

2撰写你的“独家菜谱”——Dockerfile。my-hello-app目录下,创建一个名为Dockerfile的文件(没有后缀名!):

Bash

nano Dockerfile

在里面,输入我们这份“私房菜”的制作步骤:

Dockerfile

# 步骤1:选择一个带有Python 3.9的基础厨房
FROM python:3.9-slim# 步骤2:在厨房里,创建一个叫/app的操作台
WORKDIR /app# 步骤3:把厨房外所有准备好的食材,都复制到操作台上
COPY . .# 步骤4:根据食材清单,安装所有配料
RUN pip install -r requirements.txt# 步骤5:告诉大家,这份便当的出餐口在5000
EXPOSE 5000# 步骤6:最后,规定加热这份便当时,要执行的主菜制作命令
CMD ["python", "app.py"]

这份Dockerfile,是不是像一份注释极其详细的菜谱,清晰地记录了每一步操作?

3让Docker照着“菜谱”做“菜”——构建镜像。my-hello-app目录下,执行以下命令:

Bash

docker build -t my-python-app .

docker build:告诉Docker:“开始做菜!”

-t my-python-app:给做出来的这份“菜谱”(镜像)起个名字。

告诉Docker,菜谱(Dockerfile)就在当前目录下。 Docker会严格按照你的Dockerfile,一步一步地执行,最终生成一个属于你自己的、独一无二的镜像。

4上菜!——运行你自己的容器。 现在,我们用自己的“菜谱”,做一份“便当”出来:

Bash

docker run -d -p 5000:5000 --name my-app my-python-app

  1. 这次的端口映射是-p 5000:5000,因为我们的Flask应用,内部的出餐口是在5000。

最终的凯旋:

再次打开你本地的浏览器,这次,在地址栏输入:http://你的服务器IP地址:5000

当你看到屏幕上显示出**“Hello, Docker! 这是我亲手打包的应用!”**这行你亲手写下的文字时,那种成就感,无与伦比。你不再只是一个“消费者”,你已经成了一个真正的“创造者”。

你的旅程,才刚刚开始

今天,你亲手打包并启动了你的第一个“魔法便当”。这个小小的“Hello, Docker!”,是你通往云原生、DevOps等广阔世界的第一张门票。

你已经掌握了将任何应用,封装成一个标准、可移植、处处运行的“集装箱”的超能力。从此以后,“在我电脑上是好的”将不再是你的借口,而是你的自信宣言。因为你知道,你的应用,已经被装进了那个标准、可靠、随处可行的魔法盒子里。

去吧,去打包你的下一个伟大创意吧!

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

相关文章:

  • 基于Matlab图像处理的黄豆自动计数系统设计与实现
  • 【数据结构入门】双向链表
  • Windows中安装rustup-init.exe以及cargo build报错443
  • ENSP 中静态路由负载分担
  • linux开发之mmap内存映射
  • 算法解决爬楼梯问题
  • SQL注入攻击基础
  • 【LVGL自学笔记暂存】
  • 如何正确选择建站工具?
  • FPGA高端项目:图像采集+Aurora 8B10B+UDP图传架构,基于GTP高速收发器的光口转网口,提供4套工程源码和技术支持
  • 旧物回收小程序系统开发:连接你我,共筑环保梦想
  • Linux下动态库链接的详细过程
  • 【网络运维】Linux:NFS服务器原理及配置
  • Kafka数据生产和发送
  • RuoYi OpenAPI集成从单体到微服务改造全过程记录
  • 高速公路安装定向广播的优势
  • centos VMware ESXi 扩容
  • 为什么任务顺序会影响效率?如何实现自定义顺序?
  • Python 基础详解:数据类型(Data Types)—— 程序的“数据基石”
  • Fiddler 安装配置教程
  • 认识汇编:解码计算机思维的底层语言(第一章)
  • 【YOLO学习笔记】YOLOv8详解解读
  • WEB开发-第二十七天(PHP篇)
  • 【Unity Plugins】使用ULipSync插件实现人物唇形模拟
  • 基于Spring Cloud Stream与Kafka的事件驱动微服务架构设计与实战指南
  • 【Python】基于Python自动化邮件发送系统:从配置到实现的完整指南
  • 【YOLOv8改进 - C2f融合】C2f融合SFS-Conv(空间 - 频率选择卷积)提升特征多样性,同时减少参数和计算量
  • 如何在 VS Code 中进行 `cherry-pick`
  • 使用Python验证常见的50个正则表达式
  • react接口防抖处理