Docker 入门笔记:从安装到第一个容器
Docker 的概念对新手来说确实有点绕。这篇笔记试着用最直白的方式解释清楚镜像、容器、Dockerfile 三者之间的关系,然后手把手跑通第一个 Nginx 容器。
一句话理解 Docker
Docker 就像一个轻量级的虚拟机,但它不虚拟整个操作系统,而是直接复用宿主机的内核。所以它启动快(秒级)、占用资源少(几十 MB),一台服务器可以轻松跑几十个容器。
三个核心概念
镜像(Image):相当于一个只读的模板,里面包含了运行某个应用所需的一切——代码、运行时、系统库、环境变量。可以把它理解为「安装包」。
容器(Container):镜像是静态的,运行起来的镜像就是容器。一个镜像可以启动多个容器实例,彼此隔离。容器是「正在运行的程序」。
Dockerfile:一个文本文件,描述了如何构建一个镜像。相当于「配方」——照着做就能做出一模一样的镜像。
打个比方:Dockerfile 是菜谱,镜像是做好的半成品,容器是端上桌的菜。
安装 Docker
Ubuntu 下用官方脚本一键安装:
curl -fsSL https://get.docker.com | sudo bash
sudo usermod -aG docker $USER # 免 sudo 运行
sudo systemctl enable docker
sudo systemctl start docker
安装完成后执行 docker version 验证,看到 Client 和 Server 版本信息就说明成功了。
跑第一个容器:Nginx
不需要手动安装 Nginx,一条命令就能跑起来:
docker run -d --name my-nginx -p 8080:80 nginx:alpine
参数解释:
-d:后台运行--name my-nginx:给容器取个名字-p 8080:80:把宿主机的 8080 端口映射到容器的 80 端口nginx:alpine:镜像名及标签,alpine 版本体积很小(约 5MB)
浏览器访问 http://服务器IP:8080,就能看到 Nginx 欢迎页。
常用命令速查
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(含已停止的)
docker stop my-nginx # 停止容器
docker start my-nginx # 启动容器
docker rm my-nginx # 删除容器(须先停止)
docker images # 查看本地镜像
docker logs my-nginx # 查看容器日志
docker exec -it my-nginx sh # 进入容器内部
用 Dockerfile 定制自己的镜像
如果想把一个静态网站打包进 Nginx 镜像,可以写一个简单的 Dockerfile:
FROM nginx:alpine
COPY ./html /usr/share/nginx/html
然后构建并运行:
docker build -t my-blog .
docker run -d --name blog -p 80:80 my-blog
总结
Docker 的核心价值在于「环境一致性」——开发、测试、生产环境跑的是同一个镜像,不会出现「我电脑上能跑啊」的问题。入门不难,掌握镜像和容器两个概念、熟练十来条命令,日常使用就基本够了。