Docker 入门实战:从安装到跑起第一个容器
第一次听说 Docker 的人,常把它想得很复杂。其实一句话就能讲清:Docker 就是把“应用 + 它需要的运行环境”一起打包成一个标准化的“集装箱”,在哪台机器上打开,里面都一模一样。再也不会出现“在我电脑上明明能跑”的尴尬。
一、Docker 解决什么问题
传统部署方式里,应用依赖操作系统版本、语言运行时、各种库,换一台服务器就可能水土不服。Docker 用镜像(Image)和容器(Container)两层概念解决它:镜像是只读的模板,容器是镜像跑起来的实例。镜像可以层层复用、随处分发,容器启动只要秒级。
二、安装 Docker(以 Ubuntu 为例)
官方推荐用 apt 安装,大致三步:
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
装完验证一下:
docker --version
docker run hello-world
看到 Hello from Docker!,说明安装成功。hello-world 是官方最小测试镜像,跑完即退出。
三、跑起第一个真正有用的容器
用 Nginx 举例,一行命令启动一个 Web 服务器:
docker run -d -p 8080:80 --name my-nginx nginx
参数拆开看:-d 后台运行;-p 8080:80 把容器内 80 端口映射到本机 8080;--name 起个名字方便管理。浏览器打开 http://localhost:8080,就能看到 Nginx 欢迎页。
四、常用命令速查
| 命令 | 作用 |
|---|---|
docker ps / docker ps -a |
查看运行中 / 全部容器 |
docker images |
查看本地镜像 |
docker stop/start/rm 容器名 |
停止 / 启动 / 删除容器 |
docker logs -f 容器名 |
实时看容器日志 |
docker exec -it 容器名 bash |
进入容器内部 shell |
docker pull 镜像名 |
拉取镜像 |
注意:docker rm 删容器前要先 stop,容器删了里面的数据默认也丢了——重要数据要用卷(见第六节)。
五、写一个自己的镜像:Dockerfile
新建目录,放一个 app.py:
print("Hello, Docker!")
再写 Dockerfile:
FROM python:3.12-slim
WORKDIR /app
COPY app.py .
CMD ["python", "app.py"]
构建并运行:
docker build -t my-app:1.0 .
docker run --rm my-app:1.0
FROM 指定基础镜像,COPY 把文件拷进去,CMD 定义容器启动时执行的命令。三行配置,就把“代码 + Python 环境”打成了一个可移植的包。
六、一个容易踩的坑:数据持久化
容器默认是“无状态”的,删容器数据就没了。需要保留的数据,用卷挂载:
docker run -d -v /home/user/data:/data --name worker my-app:1.0
-v 把宿主机目录映射进容器,数据写在宿主机上,容器删了数据还在。数据库类容器一定要这么做。
七、下一步学什么
掌握上面这些,日常开发够用了。进阶可以看:docker-compose 一键编排多容器、镜像分层与体积优化、私有镜像仓库。建议每学一个命令就亲手敲一遍,Docker 是典型的“动手型”技术,看十遍不如跑一遍。
环境不一致是协作和部署中最磨人的问题之一,Docker 用很低的学习成本把它抹平了。今天花半小时跑通第一个容器,明天部署应用时你会感谢自己。
- 点赞
- 收藏
- 关注作者
评论(0)