Docker
这篇文章主要围绕 Docker 的核心概念、安装过程及实际应用 展开,结合 Ollama 与 DeepSeek 32B 模型的部署实例,系统地介绍了从安装到运行的完整流程。
文章分为3部分:docker是什么(三个核心概念)、安装Docker、如何使用
Docker 是一个开源的容器化平台,它可以让开发者将应用程序及其依赖项打包到一个可移植的容器中(方便打包,运行和分享),然后在任何支持 Docker 的环境中运行。
一、三个核心概念:
1、镜像(Image):Docker 镜像是一个只读的模板,它包含了运行应用程序所需的所有内容,包括操作系统、应用程序代码、依赖库和配置文件等。
2、容器(Container):容器是镜像的运行实例。它是一个独立的、可运行的环境,基于镜像创建,并可以在其中执行应用程序。容器之间相互隔离,具有自己独立的文件系统、网络和进程空间,保证了应用程序及其依赖在不同环境中的一致性和稳定性。
3、仓库(Reposity):Docker 仓库是用于存储和共享镜像的地方。
难以理解把,不直观吧,我第一次接触也是。举个例子帮助理解:
把 Docker 想象成一个魔法盒子,这个盒子能把你喜欢的玩具(应用程序)及其配套的小零件(依赖项)都装起来,然后在任何地方都能让这个玩具正常玩起来。
1、『镜像』就是包括小零件、玩具、使用说明书共同打包的东西。它是一个固定的、可以被复制的模板,里面包含了让小机器人正常工作的所有东西。
2、『容器』就是当你获取到这个镜像,然后将其打开并组装成机器人。这个机器人和盒子里面的空间就相当于一个容器。所以说容器是镜像的实例。
3、『仓库』:假如你有很多的“玩具套装盒子”(多个镜像)放在这个大仓库里、通过给这些进行编号,方便存取。
还有一个概念:支持 Docker 的环境:满足 “能解析 Docker 镜像、管理容器生命周期” 的核心条件,就是环境,包括质是Docker Engine)或兼容容器运行时(如 containerd)的系统 / 平台,只要
二、ubantu安装docker引擎
2.1 整体参考:
https://zhuanlan.zhihu.com/p/25850755057
2.2 遇到的问题:
2.2.1 添加Docker GPG密钥:
报错:curl: (35) OpenSSL SSL_connect: 连接被对方重置 in connection to download.docker.com:443
gpg: 找不到有效的 OpenPGP 数据
分析:网络不可达
解决:
1)先把官方GPG key下载到本地,下载下来是一个gpg文件,Url链接为:
https://download.docker.com/linux/ubuntu/gpg
2)转成二进制格式,然后保存到这个文件中
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg gpg
2.2.2 运行测试容器时
报错:sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
分析:需要安装国内镜像
解决:参考以下博客
https://blog.csdn.net/oyjl__/article/details/143522664
三、docker如何使用
3.1 Docker 常见的使用场景
| 场景 | 说明 | 示例命令 |
|---|---|---|
| 💻 1. 快速运行别人项目 | 不用配置 Python 环境、依赖等,一键启动 | docker run -it python:3.10 bash |
| 🧪 2. 本地部署 AI 模型 / API | 比如运行 Ollama、OpenWebUI、LangChain 服务 | docker run -d -p 11434:11434 ollama/ollama |
| 🏗️ 3. 前后端隔离开发 | 前端、后端、数据库分别放进不同容器,用 Docker Compose 管理 | docker-compose up |
| 📦 4. 打包你自己的应用 | 你可以写一个 Dockerfile,让别人一键运行你的项目 |
docker build -t myapp . |
| 🔁 5. 一键迁移环境 | 把容器保存成镜像,换台电脑照样运行 | docker save / docker load |
3.2 以 Ollama + DeepSeek 32B 为例
已经安装好 Docker;安装了 Ollama;用 ollama pull deepseek-coder:32b 拉取了模型。
✅ Step 1:确认 Docker 服务运行
在命令行输入:
docker ps
如果能看到类似:
CONTAINER ID IMAGE COMMAND STATUS PORTS
说明 Docker 正在运行。
如果没有,启动:
sudo service docker start
✅ Step 2:启动 Ollama 服务容器(如果没启动)
Ollama 本身是一个 Docker 镜像 + 本地管理器。
最常用的启动命令是:
docker run -d \ --name ollama \ -v ollama:/root/.ollama \ -p 11434:11434 \ ollama/ollama
解释一下:
-
-d:后台运行(detached) -
--name ollama:容器名 -
-v ollama:/root/.ollama:持久化模型数据 -
-p 11434:11434:映射端口(Ollama 默认端口) -
ollama/ollama:镜像名称
启动后,你可以访问:
http://localhost:11434
查看 Ollama 是否已在运行。
✅ Step 3:进入容器,或在本机使用 Ollama CLI
方式 A(推荐):
直接在本机运行命令(如果你安装了 Ollama CLI):
ollama run deepseek-coder:32b
它会自动调用本地 Ollama 服务(实际上背后是 Docker 在运行)。
方式 B(容器内运行):
如果你想手动进入容器运行:
docker exec -it ollama bash
进入后运行:
ollama run deepseek-coder:32b
✅ Step 4:与模型交互
模型启动后,你就可以输入自然语言了,比如:
>>> Write a Python script to summarize a text file.
或者通过 API 调用:
curl http://localhost:11434/api/generate -d '{ "model": "deepseek-coder:32b", "prompt": "Explain how transformers work" }'
3.3 常用 Docker 命令
| 目的 | 命令 | 说明 |
|---|---|---|
| 查看正在运行的容器 | docker ps |
|
| 创建并启动新容器(从镜像生成新容器实例) | docker run |
|
| 启动一个容器 | docker start 容器名 |
|
| 停止容器 | docker stop 容器名 |
|
| 删除容器 | docker rm 容器名 |
|
| 查看日志 | docker logs -f 容器名 |
|
| 进入容器 | docker exec -it 容器名 bash |
|
| 拉取镜像 | docker pull 镜像名 |
|
| 删除镜像 | docker rmi 镜像名 |
更多推荐
所有评论(0)