欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

Docker

Docker — 轻量级容器引擎,让应用打包、分发、部署像点外卖一样简单。

最近有个朋友问我:“你天天写代码,部署环境搞来搞去的,不烦吗?”我笑了笑,没说话,直接给他甩了个Docker。三分钟后他回了一句:“卧槽,这玩意儿我早该用。”

Docker到底是什么?它解决了什么问题?简单说,你写了一个Python程序,本地跑得飞起,一部署到服务器就崩。原因?Python版本不对、缺个库、系统环境不一样。Docker就是来解决这个“在我电脑上明明能跑”的世纪难题的。它把你的应用和它需要的环境打包成一个“容器”,这个容器在任何装了Docker的机器上都能跑,结果完全一致。

说白了,Docker就是给应用装了个“随身行李箱”,走到哪都能打开用,不用再重新搭环境。


下载安装

先别急着看教程,得先把它装到电脑上。Docker官方提供了多平台的安装包,下载地址在这里:

👉 Docker 官网下载

Windows用户
直接下载Docker Desktop for Windows,双击安装。安装过程中会提示启用WSL2(Windows Subsystem for Linux),按提示操作就行。装完后重启电脑,任务栏会出现鲸鱼图标,点开就能用。注意:Windows 10专业版或企业版体验最好,家庭版也能用,但可能需要手动装WSL2。

macOS用户
同样下载Docker Desktop for Mac。Intel芯片和Apple Silicon(M1/M2)的安装包是分开的,别下错了。双击.dmg文件拖到Applications文件夹,打开后会在菜单栏出现鲸鱼图标。第一次启动会弹窗要权限,点“允许”就行。

Linux用户
Linux用户最幸福,一条命令搞定:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

装完之后记得把当前用户加到docker组,不然每次都要sudo:

sudo usermod -aG docker $USER
newgrp docker

装完后打开终端输入:

docker --version

看到版本号就说明成了。再跑个hello world验证一下:

docker run hello-world

如果看到一段欢迎文字,恭喜你,Docker已经能正常工作了。


基础使用教程

既然装好了,咱们来点实际的。Docker的核心概念就三个:镜像(Image)、容器(Container)、仓库(Repository)。别被术语吓到,我用人话解释:

  • 镜像:一个只读的模板,里面包含应用和它需要的环境。比如一个装了Python 3.11和Flask的系统快照。
  • 容器:镜像跑起来后的实例,就像一个轻量级的虚拟机。你可以启动、停止、删除它。
  • 仓库:存放镜像的地方。Docker Hub是官方仓库,里面有几百万个现成的镜像,你需要的软件大概率都有。

第一步:拉取一个镜像

比如你想跑一个Nginx服务器,不用自己装,直接拉:

docker pull nginx

Docker会自动从Docker Hub下载最新版的Nginx镜像。你也可以指定版本,比如docker pull nginx:1.25。

第二步:运行容器

拉下来之后跑起来:

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

解释一下参数:

  • -d:后台运行(detach模式)
  • -p 8080:80:把本机的8080端口映射到容器的80端口
  • --name my-nginx:给容器起个名字
  • nginx:用哪个镜像

现在打开浏览器访问http://localhost:8080,就能看到Nginx的欢迎页面。就这么简单,你已经成功部署了一个Web服务器。

第三步:管理容器

查看正在运行的容器:

docker ps

看所有容器(包括已停止的):

docker ps -a

停止容器:

docker stop my-nginx

启动已停止的容器:

docker start my-nginx

删除容器:

docker rm my-nginx

第四步:构建自己的镜像

光用别人的镜像不过瘾,咱们自己做一个。假设你有一个Python Flask应用,项目目录结构如下:

myapp/
├── app.py
└── requirements.txt

在项目根目录下创建一个Dockerfile,内容如下:

# 使用官方Python镜像作为基础
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

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

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

# 暴露端口
EXPOSE 5000

# 启动命令
CMD ["python", "app.py"]

然后构建镜像:

docker build -t my-flask-app .

-t是给镜像打标签,方便识别。构建完成后运行:

docker run -d -p 5000:5000 my-flask-app

访问http://localhost:5000,你的Flask应用就跑起来了。

第五步:用Docker Compose管理多容器应用

现实中的项目往往不止一个服务,比如一个Web应用需要前端、后端、数据库。一个个手动启动太麻烦,Docker Compose就是干这个的。

在项目目录下创建docker-compose.yml:

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

然后一条命令启动所有服务:

docker-compose up -d

停止所有服务:

docker-compose down

Docker Compose会自动处理依赖关系,先启动数据库再启动Web应用。这个功能对开发环境尤其好用,一个文件就能定义整个技术栈。


进阶技巧

基础够用了,再分享几个常用的“骚操作”。

1. 清理磁盘空间

Docker用久了会堆积大量无用的镜像、容器、卷,磁盘空间不知不觉就满了。一键清理:

docker system prune -a --volumes

这个命令会删除所有停止的容器、未使用的网络、悬空镜像,以及没有被任何容器使用的卷。慎用,但很管用。

2. 进入容器内部调试

有时候需要看看容器里的日志或文件,可以直接进入容器:

docker exec -it my-nginx bash

如果容器里没有bash(比如基于alpine的镜像),用sh:

docker exec -it my-nginx sh

进去之后就跟操作普通Linux一样,可以查看文件、跑命令。

3. 挂载本地目录到容器

开发的时候频繁改代码,每次都要重新构建镜像太慢了。可以用卷挂载,让容器直接读取本机目录:

docker run -d -p 5000:5000 -v $(pwd):/app my-flask-app

这样你改了本机的代码,容器里的应用也会立刻生效(前提是应用支持热重载)。开发时特别爽。

4. 多阶段构建减小镜像体积

Python镜像动辄几百兆,但生产环境其实只需要运行环境。多阶段构建可以大幅减小体积:

# 第一阶段:构建
FROM python:3.11-slim as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 第二阶段:运行
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY app.py .
CMD ["python", "app.py"]

最终镜像只包含运行所需的最小文件,体积能缩小一半以上。

5. 使用.dockerignore

和.gitignore类似,在项目根目录创建.dockerignore文件,排除不需要的文件:

__pycache__
*.pyc
.git
.env

构建镜像时就不会把这些垃圾文件打包进去,既加速构建又减小体积。


写在最后

Docker不是那种学了要背一堆命令的工具,它是真正能帮你省时间的。以前我部署一个项目,光配环境就得半小时,现在一个docker-compose up搞定一切。而且团队协作时,新人来了不用装什么MySQL、Redis、Node.js,装个Docker拉镜像就能跑,效率提升肉眼可见。

如果你还在手动配环境、被“在我电脑上明明能跑”折磨,真的,试试Docker。相信我,用上之后你会后悔——后悔没早点用。

有什么问题欢迎留言讨论,踩过的坑也可以分享出来,大家一起避雷。

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消