Docker 入门:从安装到第一个容器的完整实践
为什么需要 Docker
很多开发者都遇到过这样的问题:代码在自己的电脑上跑得好好的,换一台机器就报错。原因往往是环境不一致:Python 版本不同、系统库缺失、配置文件路径不对。Docker 的思路是把应用和它依赖的环境打包成一个镜像,镜像在任何装了 Docker 的机器上运行的结果都是一样的,这就从根本上解决了“在我机器上能跑”的问题。
镜像与容器:先分清两个概念
镜像是一个只读的模板,包含了运行应用所需的系统、依赖和代码;容器是镜像运行起来的实例,可以启动、停止和删除。同一个镜像可以启动多个容器,容器之间默认相互隔离。理解这组关系,是学 Docker 的第一步。
安装与验证
Windows 和 macOS 可以安装 Docker Desktop,Linux 服务器一般用官方脚本或发行版的包管理器安装。安装完成后,先用两条命令验证环境是否正常:
docker --version
docker run hello-world
如果看到 hello-world 容器的欢迎信息,说明 Docker 已经可以正常工作。第一次运行 hello-world 时,Docker 会自动从镜像仓库拉取镜像,这个过程只需要几秒。
运行第一个容器
以 Nginx 为例,一条命令就能启动一个 Web 服务:
docker run -d -p 8080:80 --name my-nginx nginx
参数的含义很直观:-d 表示后台运行,-p 把主机的 8080 端口映射到容器的 80 端口,–name 给容器起个名字。启动后,在浏览器地址栏输入 localhost:8080 并访问,就能看到 Nginx 的欢迎页面。
常用命令速查
日常使用中,这几个命令出现频率最高:docker ps 查看正在运行的容器,docker ps -a 查看全部容器,docker logs 查看容器日志,docker stop 和 docker start 停止与启动容器,docker rm 删除容器,docker images 查看本地镜像,docker pull 拉取镜像,docker exec -it 进入正在运行的容器内部排查问题。
用 Dockerfile 构建自己的镜像
当需要把自己的应用容器化时,可以写一个 Dockerfile。例如一个简单的 Python 应用:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
然后用 docker build -t my-app . 构建镜像,再用 docker run 启动它。把依赖安装放在代码复制之前,是一个实用的小技巧:只要依赖文件不变,构建时就能复用缓存,速度快很多。
数据持久化:别把数据放在容器里
容器被删除后,容器内部写入的数据也会随之消失。需要长期保存的数据要用数据卷挂载到主机目录,例如 docker run -v /data:/app/data。数据库、日志和上传文件都应该这样处理,这是新手最容易踩的坑。
常见问题与排查思路
遇到问题时,先看日志:docker logs 容器名往往能直接看到报错。端口冲突就换一个主机端口;镜像拉取慢可以配置国内镜像加速;容器启动后立刻退出,通常是启动命令出错或程序异常退出,查看退出码和日志就能定位。
小结
Docker 的核心就三步:拉取或构建镜像、运行容器、管理容器与数据。掌握这一套流程后,就可以把自己的项目容器化,再结合编排工具部署到云服务器上。对初学者来说,不必一开始就研究所有细节,先跑通一个容器,再逐步深入网络、数据卷和镜像优化,学习曲线会平缓得多。
- 点赞
- 收藏
- 关注作者
评论(0)