告别我电脑上能跑5分钟体验容器化部署

作为一名开发者,你一定遇到过这样的场景:代码在自己电脑上跑得好好的,到同事那里就各种报错;或者好不容易部署到服务器上,却因为环境版本不一致折腾一整天。

Docker 的出现就是为了解决这个问题。它就像一个轻量级的数字集装箱,把应用和它需要的所有依赖(库、配置、环境)一起打包,确保在任何支持 Docker 的平台上都能稳定运行。

什么是 Docker 镜像和容器?

在开始动手之前,先理解两个核心概念:

  • 镜像:相当于一个只读的模板,包含了运行应用所需的一切(代码、运行时、库、环境变量等)。就像一套房子的设计图纸。
  • 容器:镜像的运行实例,就像根据图纸盖出来的房子。每个容器相互隔离,可以独立启动、停止、删除。

0 步:安装 Docker

首先确保你的电脑上安装了 Docker

  • Windows / macOS:推荐安装 Docker Desktop,有图形界面,操作方便。
  • LinuxUbuntu:可以用包管理器安装:

bash

sudo apt update

sudo apt install docker.io

sudo systemctl enable --now docker

安装完成后,打开终端输入以下命令验证是否成功:

bash

docker --version

看到版本号就说明安装好了。

核心 3 个命令,跑起第一个容器

第一个命令:docker run——启动容器

这是最核心的命令,创建并启动一个容器。我们先从官方提供的示例镜像开始:

bash

docker run hello-world

执行这条命令后,Docker 会自动从 Docker Hub(镜像仓库)拉取 hello-world 镜像,然后启动一个容器。如果看到 "Hello from Docker!" 的欢迎信息,恭喜你,你的第一个 Docker 容器已经成功运行了

注意:如果本地没有这个镜像,Docker 会自动下载,这一点非常方便。

现在我们来玩点更实际的——在容器里运行一个 Nginx 网页服务器。

bash

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

这条命令涉及几个关键参数:

  • -d后台运行detached模式),这样终端不会被卡住。
  • -p 8080:80端口映射。把宿主机的 8080 端口映射到容器内部的 80 端口。这样你访问本机的 8080 端口,实际上访问的是容器里 Nginx 的服务。
  • --name my-nginx:给容器起个名字,方便后续管理。
  • nginx:镜像名称。如果本地没有,Docker 会自动从 Docker Hub 拉取。

执行完后,打开浏览器访问 http://localhost:8080,你应该能看到 Nginx 的欢迎页面。你的第一个真正提供服务的容器就跑起来了!

第二个命令:docker ps——查看容器状态

容器启动后,怎么知道它在不在运行呢?用 docker ps

bash

docker ps

这会列出所有正在运行的容器,包括容器 ID、名称、使用的镜像、状态、端口映射等信息。

如果想看所有容器(包括已停止的),加上 -a 参数:

bash

docker ps -a

第三个命令:docker stop  docker rm——停止和删除容器

容器用完了,怎么清理?先停止再删除。

停止容器(容器还在,只是状态变成 Exited):

bash

docker stop my-nginx

删除容器(彻底移除):

bash

docker rm my-nginx

如果想强制删除正在运行的容器,可以加 -f 参数。

实战:跑一个你自己的 Python 应用

光跑现成的镜像不够过瘾,我们来打包自己的应用。假设你有一个简单的 Python Flask 应用,根目录下有 app.py  requirements.txt

创建一个名为 Dockerfile 的文件(没有后缀名),内容如下:

dockerfile

# 选择基础镜像

FROM python:3.9-slim

# 设置工作目录

WORKDIR /app

# 复制依赖文件并安装

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

# 复制所有代码

COPY . .

# 声明容器监听端口

EXPOSE 5000

# 启动命令

CMD ["python", "app.py"]

然后在终端执行:

bash

# 构建镜像(注意末尾的 . 表示当前目录)

docker build -t my-python-app .

# 运行容器

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

打开浏览器访问 http://localhost:5000,就能看到你的应用在容器里跑起来了。

总结:3 个命令就够了

回顾一下今天用到的三个核心命令:

  1. docker run [选项] 镜像名 —— 创建并启动一个新容器。这是最常用的命令,如果本地没有指定的镜像,Docker 会自动从仓库拉取。
  2. docker ps [-a] —— 查看容器列表。不加参数时只显示正在运行的容器,加上 -a 参数则可以查看所有容器(包括已经停止的)。
  3. docker stop/rm 容器名 —— 停止或删除容器。stop 让容器停止运行(状态变为 Exited),rm 则将容器彻底移除。如果要删除正在运行的容器,需要加 -f 参数强制删除。

从零到跑起第一个容器,真的只需要这三板斧。剩下的诸如 docker exec(进入容器内部)、docker logs(查看日志)等命令,都是在实际使用中逐步掌握的。容器化的大门已经打开,快去试试吧!

更多推荐