第一次用 Docker:从"跑起来"到"不踩坑"的最小上手指南

举报
yd_255726501 发表于 2026/11/05 08:29:57 2026/11/05
【摘要】 “我在我机器上明明是好的”——这句话每个开发者都说过。Docker 就是来终结这句话的:把应用和它的运行环境一起打包,走到哪跑到哪。下面这份最小上手指南,只讲第一次用 Docker 必须知道的几件事。 一、镜像和容器,一句话讲清镜像(image)是只读的模板,容器(container)是镜像跑起来的实例。类比一下:镜像是安装包,容器是装好后正在运行的软件。一个镜像可以启动多个容器,容器删了,...

“我在我机器上明明是好的”——这句话每个开发者都说过。Docker 就是来终结这句话的:把应用和它的运行环境一起打包,走到哪跑到哪。下面这份最小上手指南,只讲第一次用 Docker 必须知道的几件事。

一、镜像和容器,一句话讲清

镜像(image)是只读的模板,容器(container)是镜像跑起来的实例。类比一下:镜像是安装包,容器是装好后正在运行的软件。一个镜像可以启动多个容器,容器删了,镜像还在。

二、第一个容器:三行命令跑起来

装好 Docker 后,先验证安装:

docker --version
docker run hello-world

第二行会拉取一个极小的测试镜像并运行,看到 “Hello from Docker!” 就说明环境 OK。接着跑一个真正有用的:

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

-d 后台运行,-p 把宿主机的 8080 端口映射到容器的 80 端口,–name 起个名字。浏览器打开宿主机 8080 端口,看到 nginx 欢迎页,第一个容器就跑起来了。

三、日常三件套:看、进、停

容器跑起来之后,最常用的就三个动作:

docker ps            # 看正在运行的容器
docker logs my-nginx # 看容器日志,排错第一步
docker exec -it my-nginx bash  # 进容器里看一眼

exec -it 相当于给容器开一扇"后门",进去之后就是熟悉的 Linux 终端,想看配置文件、想手动调命令都可以。exit 退出,容器继续跑。

四、数据持久化:容器删了数据还在

容器默认是"一次性"的:删掉容器,里面写的数据一起消失。数据库、上传文件这种不能丢的东西,要用 -v 挂载:

docker run -d -v /data/mysql:/var/lib/mysql --name my-db mysql:8

冒号左边是宿主机目录,右边是容器内目录。数据实际落在宿主机上,容器删了重建,数据还在。新手第一个生产事故往往是没挂载就删了容器,记住这条能省一次通宵。

五、Dockerfile:三行写出自己的镜像

想把自己的程序打包?新建一个 Dockerfile,核心就三行:

FROM python:3.11-slim
COPY . /app
CMD ["python", "/app/main.py"]

FROM 选基础镜像,COPY 把代码拷进去,CMD 指定容器启动时执行的命令。然后:

docker build -t my-app:1.0 .
docker run -d --name app1 my-app:1.0

build 打包成镜像,run 跑起来。以后部署就是"打包一次,到处运行",不再有"环境不一样"的借口。

六、真实踩坑两例

  1. 端口映射写反了:-p 8080:80 是"宿主机:容器",写成 -p 80:8080 就访问不通。记不住就想:左边是"我电脑的",右边是"容器里的"。
  2. 容器一启动就退出:docker run 如果没有前台进程,容器启动完立刻退出,这是正常行为不是 bug。调试时先别加 -d,看着日志跑通了再后台化。

小结

Docker 的入门门槛其实就五步:理解镜像和容器的关系、run 起第一个容器、学会 ps/logs/exec 三件套、-v 持久化数据、Dockerfile 打包自己的应用。先把这五个动作练熟,再去碰 docker-compose 和网络配置,顺序对了就不慌。

(全文约 830 字,原创,未在任何平台发表过)

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。