Docker 新手入门:一条命令跑起你的第一个容器
很多新手第一次听说 Docker,都会被「容器」「镜像」「仓库」这些名词绕晕。其实 Docker 的核心思想一句话就能讲明白:把应用和它的运行环境打包成一个标准化的“集装箱”,在哪里都能原样跑起来。
一、Docker 到底解决了什么问题
以前部署一个应用,最头疼的就是“在我机器上明明能跑”。开发环境、测试环境、生产环境各不相同,依赖装来装去总出幺蛾子。Docker 把应用代码、运行环境、系统工具、依赖库全部打进一个镜像里,镜像在哪台机器上启动,跑出来的容器都一模一样。环境问题,从此翻篇。
三个核心概念先记住:
- 镜像(Image):只读的模板,好比手机的系统安装包。
- 容器(Container):镜像运行起来的实例,好比装好系统的手机,可以启动、停止、删除。
- 仓库(Repository):存放镜像的地方,官方默认仓库里有大量现成镜像可以直接拉取使用。
二、先验证你的 Docker 装好了
安装完成后(Windows 建议用 Docker Desktop,Linux 按发行版安装 docker-ce),打开终端敲两条命令:
docker --version
docker info
能正常输出版本号和系统信息,说明环境就绪。下面这条命令,就是你和 Docker 的第一次亲密接触。
三、一条命令,跑起第一个容器
docker run -d -p 8080:80 --name my-nginx nginx
回车,稍等几秒,打开浏览器访问本机的 8080 端口,你会看到 Nginx 的欢迎页面。恭喜,你的第一个容器已经跑起来了。
这条命令每个参数都值得新手记住:
docker run:根据镜像创建并启动一个容器。-d:后台运行,不占用你的终端。-p 8080:80:端口映射,把容器里的 80 端口映射到本机的 8080 端口。冒号左边是本机,右边是容器。--name my-nginx:给容器起个名字,方便后面管理,不起名字 Docker 会随机生成一串难记的。nginx:使用的镜像名。本地没有这个镜像时,Docker 会自动去仓库拉取。
四、新手必须掌握的 6 条命令
容器跑起来之后,日常管理就靠这几条:
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器(含已停止)
docker stop my-nginx # 停止容器
docker start my-nginx # 启动已停止的容器
docker logs my-nginx # 查看容器日志,排错神器
docker exec -it my-nginx /bin/bash # 进入容器内部,像操作一台小机器
不用死记硬背,用两三次手感就来了。docker ps 和 docker logs 是你未来排错时打开最多的两条命令。
五、小实战:把自己的页面跑起来
光跑别人的 Nginx 不过瘾,我们来部署一个自己的页面。先在本地写一个简单的 index.html:
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>我的第一个容器应用</title></head>
<body><h1>Hello,Docker!</h1></body>
</html>
然后用一条命令把它挂进 Nginx 容器:
docker run -d -p 8080:80 --name my-site -v /本地路径:/usr/share/nginx/html nginx
-v 是目录挂载,把本地目录映射到容器内的网站根目录。刷新浏览器 8080 端口,看到的就是你自己写的页面。改一下 index.html 再刷新,页面实时更新——开发调试就是这么丝滑。
玩够了记得清理:
docker stop my-site my-nginx
docker rm my-site my-nginx
注意先 stop 再 rm,直接删运行中的容器会报错(也可以加 -f 强制删,但新手建议走标准流程)。
六、新手最容易踩的 3 个坑
- 容器一启动就退出:八成是前台进程结束了。跑应用容器记得加
-d,并且确认镜像的默认命令是常驻进程。 - 端口被占用:
-p 8080:80报端口冲突时,换个本机端口比如 8081 就行,容器内部端口不用动。 - 删容器删不掉镜像:
docker rm删的是容器,镜像还在。用docker rmi 镜像名删镜像,docker images先看看本地都有哪些。
写在最后
Docker 的学习曲线其实很平缓:先会 run 跑起来,再会 ps、logs、exec 管起来,最后学会写自己的 Dockerfile 就算入门了。今天这条 docker run 命令就是起点,剩下的,交给每天多动手一次。
- 点赞
- 收藏
- 关注作者
评论(0)