第一次用 Docker:从"跑起来"到"不踩坑"的最小上手指南
“我在我机器上明明是好的”——这句话每个开发者都说过。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 跑起来。以后部署就是"打包一次,到处运行",不再有"环境不一样"的借口。
六、真实踩坑两例
- 端口映射写反了:-p 8080:80 是"宿主机:容器",写成 -p 80:8080 就访问不通。记不住就想:左边是"我电脑的",右边是"容器里的"。
- 容器一启动就退出:docker run 如果没有前台进程,容器启动完立刻退出,这是正常行为不是 bug。调试时先别加 -d,看着日志跑通了再后台化。
小结
Docker 的入门门槛其实就五步:理解镜像和容器的关系、run 起第一个容器、学会 ps/logs/exec 三件套、-v 持久化数据、Dockerfile 打包自己的应用。先把这五个动作练熟,再去碰 docker-compose 和网络配置,顺序对了就不慌。
(全文约 830 字,原创,未在任何平台发表过)
- 点赞
- 收藏
- 关注作者
评论(0)