Docker 入门:从镜像到容器的第一次实操
Docker 入门:从镜像到容器的第一次实操
刚接触 Docker 的人常被一堆名词吓住:镜像、容器、仓库、Dockerfile……其实把它们串起来只需要一个类比:镜像是安装包,容器是运行起来的程序实例。今天这篇短文带你走完「拉镜像 → 跑容器 → 进容器看一眼 → 停掉删掉」的完整闭环。
先确认环境
安装好 Docker 后,第一件事不是急着跑容器,而是确认守护进程是活的:
docker version
docker info
docker version 能分别打出 Client 和 Server 的版本,说明本机 Docker 已经就绪。如果 Server 部分报错,多半是 Docker 服务没启动,先 systemctl start docker(Linux)或打开 Docker Desktop(Windows/macOS)。
拉取你的第一个镜像
用官方的 hello-world 镜像热身,它只有几 KB,专门用来验证环境:
docker pull hello-world
docker images
docker images 会列出本地所有镜像,注意看三个字段:REPOSITORY(镜像名)、TAG(版本标签)、SIZE(体积)。镜像是只读的分层文件系统,你可以把它理解成一个「做好的系统快照」,自己不会动。
跑起来:你的第一个容器
docker run hello-world
这条命令做了三件事:检查本地有没有 hello-world 镜像(没有就自动拉取)、基于镜像创建一个可写的容器层、启动容器并执行它的默认命令。看到那句 “Hello from Docker!” 就说明闭环通了。
再来个更有体感的例子,跑一个 Nginx:
docker run -d -p 8080:80 --name my-nginx nginx
参数拆开看:-d 是后台运行(detached),-p 8080:80 把容器的 80 端口映射到本机的 8080 端口,--name 给容器起个好记的名字。跑完后浏览器打开 http://localhost:8080,能看到 Nginx 欢迎页,就说明「容器里的服务」已经透过端口映射被你摸到了。
进容器里看一眼
容器跑起来后,你可以用 exec 进去逛一圈:
docker exec -it my-nginx /bin/bash
-it 是交互式终端的经典组合。进去之后 ls /usr/share/nginx/html 能看到网页文件的真身,exit 退出来,容器还在后台跑着——这就是「容器」和「镜像」的本质区别:镜像是模板,容器是模板实例化之后的可运行、可进出的活环境。
停掉与清理:别留僵尸容器
新手最容易犯的错是容器越跑越多,最后 docker ps 一长串。养成随手清理的习惯:
docker stop my-nginx # 停止容器
docker rm my-nginx # 删除容器
docker ps -a # 看看还剩谁
如果想「跑完即焚」,启动时加 --rm 参数,容器退出后自动删除,特别适合一次性试验:
docker run --rm -it ubuntu bash
三个新手常踩的坑
- 端口冲突:
-p 8080:80报错address already in use,说明本机 8080 已被占用,换个端口如 8081 即可。 - 镜像拉不动:国内网络拉取 Docker Hub 可能很慢,配置一个国内镜像加速器能省大量时间,这是生产力配置而非可选项。
- 容器里改了东西重启就没:容器可写层随容器删除而消失,重要数据要用
-v挂载卷持久化——这是下一课的内容。
小结
今天的闭环只有五个命令:pull、images、run、exec、stop/rm。记住那句类比——镜像是安装包,容器是装好并跑起来的软件——后面学 Dockerfile(自己打安装包)和 docker-compose(一次装一套软件),都是在这个心智模型上加零件。动手把上面的命令敲一遍,比看十篇文章管用。
- 点赞
- 收藏
- 关注作者
评论(0)