Docker 入门实战:十分钟跑起你的第一个容器
第一次接触 Docker 时,我最大的疑惑是:虚拟机已经能隔离环境了,为什么还要容器?真正用过一次就明白了——把一个应用和它依赖的环境打包成镜像,在哪台机器上跑起来都一模一样,"在我电脑上是好的"这句话基本就消失了。这篇把从零到跑起第一个容器、再到写出第一个 Dockerfile 的完整路径走一遍,十分钟够用。
一、安装与自检
Windows 和 Mac 直接装 Docker Desktop,Linux 用发行版的包管理器或官方脚本安装即可。装完在终端执行两个命令确认状态:
docker version
docker info
能正常输出版本信息和系统信息,说明客户端和守护进程都工作正常。如果提示连不上守护进程,Linux 下先确认服务已启动,并且当前用户在 docker 用户组里;Desktop 版则先把程序打开等鲸鱼图标稳定下来。
二、跑起第一个容器
用官方的 nginx 镜像练手,一行命令就能得到一个能访问的 Web 服务:
docker run -d --name web -p 8080:80 nginx
第一次运行会先拉取镜像,稍等片刻即可。三个参数是新手最该先搞懂的:-d 表示后台运行,不占着终端;--name web 给容器起个名字,后面所有操作都可以用名字指代它,不用记那串容器 ID;-p 8080:80 是端口映射,冒号左边是宿主机端口,右边是容器内端口,顺序写反了服务就访问不到。命令执行完,浏览器打开 localhost:8080 ,看到 nginx 的欢迎页就说明容器跑起来了。
三、最常用的五个命令
日常使用其实就围着这几个命令转:
docker ps:看正在运行的容器,加-a连已停止的也列出来;docker logs -f web:跟踪容器日志,服务起不来先看它,八成问题都在日志里;docker exec -it web bash:进入容器内部看看,就像 ssh 进了一台小机器;docker stop web/docker start web:停止和启动,容器停止后数据还在;docker rm web:删除容器,注意运行中的要先 stop,或者用-f强制删。
镜像层面再记住两个:docker images 看本地有哪些镜像,docker pull 镜像名:标签 主动拉取指定版本。标签不写默认是 latest,正式环境里建议固定版本号,避免哪天 latest 变了样。
四、把命令写进 Dockerfile
手动敲命令只适合练手,真正交付时要把构建过程写成文件。在一个空目录里放一个自己的 index.html,再写一个 Dockerfile:
FROM nginx:stable
COPY index.html /usr/share/nginx/html/index.html
然后构建并运行:
docker build -t myweb:v1 .
docker run -d --name myweb -p 8081:80 myweb:v1
访问 8081 端口,看到的就是你自己的页面了。FROM 指定基础镜像,COPY 把文件放进镜像,这个"配方文件 + 一条 build 命令"就是 Docker 交付的核心:别人拿到 Dockerfile,在任何机器上都能构建出完全一致的镜像。
五、新手最容易踩的三个坑
第一,端口映射写反。记住宿主机在左、容器在右,而且宿主机端口被别的程序占用时容器会启动失败,换个端口即可。第二,容器删了数据就没了。容器本身是临时的,需要保留的数据要挂载数据卷,例如 -v mydata:/usr/share/nginx/html,数据存在卷里,删容器也不影响。第三,拉镜像超时或失败。多数是网络问题,可以给 Docker 配置国内镜像加速地址,或者先确认镜像名和标签拼写无误再重试。
小结
Docker 的学习曲线其实很平:run 跑起来、logs 看问题、exec 进去瞧、Dockerfile 固化构建,这一套下来,本地开发、测试环境、持续集成里最常见的用法就都覆盖了。先把手头的小项目容器化一次,比看十篇教程都管用。
- 点赞
- 收藏
- 关注作者
评论(0)