docker概念,原理,使用方法

Docker容器化技术全面解析

什么是 Docker?

Docker 是一个开源的容器化平台,它能将应用程序及其依赖(如库、配置文件等)打包到标准化单元(容器)中,确保应用在任何支持 Docker 的环境中都能一致运行。与传统虚拟机不同,容器不需要模拟完整的操作系统,而是共享宿主机器的内核,因此更轻量、启动更快、资源占用更低。

Docker 的核心原理

Docker 基于 Linux 内核的三大核心技术实现容器化:

  1. Namespace(命名空间)
    用于隔离容器的运行环境,包括进程、网络、文件系统、用户等。每个容器都有独立的命名空间,使其看起来拥有自己的 “独立系统”,但实际共享宿主内核。

  2. Cgroups(控制组)
    限制容器对 CPU、内存、磁盘 I/O 等资源的使用,防止单个容器占用过多资源影响其他容器或宿主。

  3. UnionFS(联合文件系统)
    一种分层文件系统,允许将多个目录(层)挂载到同一个目录下。Docker 镜像通过分层存储,每层只读,容器运行时在镜像层之上添加可写层,实现高效的镜像复用和版本管理。

Docker 的核心概念

  • 镜像(Image):应用的 “模板”,包含运行所需的代码、依赖、配置等,只读不可修改。
  • 容器(Container):镜像的运行实例,可读写,是独立的应用运行单元。
  • 仓库(Repository):存储和分发镜像的平台(如 Docker Hub 公共仓库,或私有仓库)。
  • Dockerfile:用于构建镜像的文本文件,包含一系列构建指令(如安装依赖、复制文件等)。

如何使用 Docker?

1. 安装 Docker
  • Windows/Mac:安装 Docker Desktop(内置 Docker 引擎、CLI 等工具)。
  • Linux:通过包管理器安装 Docker Engine(如 apt install docker-ce 或 yum install docker-ce)。

验证安装:

docker --version  # 查看版本
docker run hello-world  # 运行测试容器,成功则安装正常
2. 基本操作命令
功能命令示例
拉取镜像docker pull 镜像名:标签(如 docker pull nginx:latest
查看本地镜像docker images
运行容器docker run --name 容器名 -d -p 宿主端口:容器端口 镜像名(如 docker run --name mynginx -d -p 80:80 nginx
查看运行中的容器docker ps(加 -a 查看所有容器)
停止 / 启动容器docker stop 容器名/ID / docker start 容器名/ID
进入容器内部docker exec -it 容器名/ID /bin/bash
删除容器docker rm 容器名/ID(需先停止容器)
删除镜像docker rmi 镜像名/ID(需先删除依赖它的容器)

如何用 Docker 部署程序?

以部署一个简单的 Python 应用为例,步骤如下:

1. 准备应用代码

创建 app.py

python

from flask import Flask
app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

创建 requirements.txt(依赖列表):

flask==2.0.1
2. 编写 Dockerfile

创建 Dockerfile(无扩展名),定义镜像构建规则:

dockerfile

# 基础镜像(Python 环境)
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY app.py .

# 暴露容器端口(与应用端口一致)
EXPOSE 5000

# 启动命令
CMD ["python", "app.py"]
3. 构建镜像

在 Dockerfile 所在目录执行:

docker build -t my-python-app:v1 .  # -t 给镜像命名和打标签,. 表示当前目录
4. 运行容器部署应用
docker run -d -p 8080:5000 --name myapp my-python-app:v1
  • -d:后台运行
  • -p 8080:5000:将宿主机器的 8080 端口映射到容器的 5000 端口
  • --name myapp:给容器命名
5. 访问应用

打开浏览器访问 http://localhost:8080,即可看到 "Hello, Docker!"。

进阶:发布与部署到服务器

  1. 推送镜像到仓库(如 Docker Hub):

    docker login  # 登录 Docker Hub
    docker tag my-python-app:v1 你的用户名/my-python-app:v1  # 打标签
    docker push 你的用户名/my-python-app:v1  # 推送镜像
    

  2. 在服务器部署
    在目标服务器上安装 Docker 后,拉取镜像并运行:

    docker pull 你的用户名/my-python-app:v1
    docker run -d -p 80:5000 你的用户名/my-python-app:v1
    

通过 Docker,你可以轻松实现应用的 “一次构建,到处运行”,极大简化了开发、测试和生产环境的一致性问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

start_up_go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值