别再跟我说“在我机器上能跑”!Docker小白入门三部曲
别再跟我说“在我机器上能跑”Docker小白入门三部曲哈喽各位屏幕前的代码搬运工们我是你们那个总是喜欢在深夜修Bug、发际线日益堪忧的资深技术员。今天咱们不聊那些高不可攀的分布式架构也不谈那些让人头秃的底层算法。咱们来聊一个能拯救你发际线、让你从此在同事面前昂首挺胸的神器——Docker。是不是经常遇到这种情况你在你那台贴满二次元贴纸的笔记本上跑得好好的代码一部署到测试服务器甚至发到甲方爸爸的电脑上就各种报错缺库、版本不对、环境变量没配……这时候你只能弱弱地说一句“呃在我机器上能跑啊……”别慌今天我就用最接地气、最小白的方式带你们把Docker这玩意儿给盘明白了。保证看完之后你能像打包外卖一样打包你的代码走到哪爽到哪。一、 灵魂拷问为什么我们需要Docker想象一下你是个大厨程序员你需要做一道叫“完美运行”的菜。传统模式裸奔你需要去菜市场找特定的食材Python环境、Node.js、各种依赖库。你自家的厨房你的电脑里辣椒是红的3.8版本盐是加碘的。但当你去朋友家厨房服务器做饭时发现那里的辣椒是绿的2.7版本盐没加碘甚至连锅都没有。结果你做出来的菜要么太辣要么没味要么直接烧了厨房。Docker模式集装箱Docker就是给你提供了一个万能移动餐车。不管你在哪里你把餐车往地上一支里面的炉灶、食材、调料全都是你自己配好的、独一无二的。你不需要管朋友家厨房有没有盐也不管他的锅干不干净。你的餐车容器里一切现成点火就干做出来的菜永远是一个味儿。这就叫“一次构建到处运行”。是不是听着就很有安全感二、 装个Docker其实没那么难很多小白看到“安装环境”四个字就想跑。别跑这次真的只要点几下“下一步”。去官网抱安装包打开 Docker 官网根据自己的系统下载 Docker Desktop。虽然下载速度可能像老牛拉破车但耐心点好饭不怕晚。一路 NextWindows 用户可能会遇到一个叫 WSL 2 的东西弹出来别怕它是微软为了让我们在Windows上也能愉快地玩 Linux 准备的虚拟机点“确定”让它装就是了。看到那个可爱的小鲸鱼了吗安装完成后任务栏会出现一个鲸鱼图标。等它不闪了变灰了或者变白了说明引擎启动成功恭喜你你的餐车已经到货了。打开终端或者 PowerShell输入docker--version如果它乖乖吐出一个版本号说明它已经听你的话了。三、 手把手教你写个“菜谱”光有餐车不行还得有菜谱。在 Docker 里这个菜谱叫Dockerfile。别被名字吓到了它就是个纯文本文件里面写着一行行“做菜步骤”。咱们来个实战假设你写了一个超级厉害的 Python 脚本叫hello.py内容就是打印一句“Hello World”。第一步准备食材新建一个文件夹把你的hello.py扔进去。第二步写菜谱在同一个文件夹下新建一个文件名字必须叫Dockerfile没有后缀名里面写上# 1. 指定基础镜像这是我们的空餐车这里选了官方的Python环境 FROM python:3.9-slim # 2. 加个标签假装自己是专业的 LABEL maintaineryour_namecool_coder.com # 3. 设置工作目录进餐车的主控室 WORKDIR /app # 4. 把当前的代码文件复制到餐车里 COPY hello.py . # 5. 只有当代码真的需要依赖库时才用这个命令安装 # RUN pip install -r requirements.txt # 6. 最后指定开火指令运行脚本 CMD [python, hello.py]看这就写完了是不是比写代码简单多了第三步打包餐车回到终端进入你的文件夹运行下面的魔法命令dockerbuild-tmy-hello-app.build构建的意思。-t my-hello-app给你的餐车起个名字叫my-hello-app。.别忘了最后这个点它代表“用当前目录的 Dockerfile”。看着终端里一行行下载进度条滚过第一次下载基础镜像会慢点毕竟要拉个几百MB的厨房过来当最后出现Successfully built和Successfully tagged时说明你的餐车打造完毕四、 开火运行你的第一个容器餐车造好了现在咱们把它推出去摆摊。输入命令dockerrun my-hello-app瞬间屏幕上应该会打印出那句神圣的Hello World。激不激动意不意外你在你的电脑上运行成功了现在你可以把这个“镜像”打包发给我发给你老板发给你远在硅谷的朋友。只要他们装了 Docker运行这一条命令结果绝对一模一样这就叫环境一致性这就是 Docker 带给程序员的终极浪漫。五、 给小白的几个“保命”小贴士作为过来人我有几句掏心窝子的话要嘱咐你们别什么都往容器里塞容器是用完即抛的“一次性餐车”。别把你的重要数据、照片、小说存在容器里容器一删啥都没了。数据要用“挂载”的方式存宿主机上这就好比餐车只负责做饭菜做好端给客人吃食材仓库还是要在岸上的。镜像能省则省基础镜像选alpine或者slim版本。别一上来就拉个几GB的完整版本来硬盘就小别让 Docker 把它塞爆了。善用 Docker Compose当你的应用需要同时开好几个餐车比如一个跑Python一个跑MySQL一个跑Redis时一个个敲命令会累死你。去学一下docker-compose.yml那是让你像指挥交响乐团一样指挥多个容器的指挥棒。写在最后看到这里如果你已经成功跑出了第一个 Hello World那么恭喜你你已经迈出了 DevOps 的第一步Docker 并不是什么高深莫测的黑魔法它只是一个帮我们解决“环境冲突”和“依赖地狱”的贴心工具。它把复杂的事情简单化让我们能更专注于代码本身而不是把时间浪费在配置环境上。好了今天的科普就到这。赶紧去试试吧下次再有人说“在我机器上能跑”直接把 Docker 镜像甩他脸上咱们下期见Happy Coding《AI编程从开发到变现小白入门》手册https://drgphlxsfa.feishu.cn/wiki/LK9pwfT7piXZuhkMHE0cokT3nXdVicroCodeAI编程时代的代码部署交易平台。支持代码快速在线部署与发布无需复杂配置一键上线应用。同时搭建代码交易生态让开发者的优质代码直接转化为收益助力个人与企业高效实现技术价值让每一段代码都能创造商业与实用价值。网址https://www.vicoco.cn