Docker 入门:把应用装进一个可搬走的盒子
很多新手第一次听到 Docker,都会问一个问题:它到底解决了什么麻烦?我的理解是,Docker 把“应用加运行环境”打包成一个可以搬走的盒子。这个盒子在开发机上能跑,换到测试机、服务器上,表现也基本一样,不用再为“在我电脑上明明可以”反复折腾。
先分清三个最基本的词。镜像是一份只读的模板,里面装好了程序和依赖;容器是镜像跑起来的实例,就像用同一个模具做出来的盒子,可以启动、停止和删除;仓库则是存放镜像的地方,方便把镜像发给别人或者部署到别的机器。记住这个关系,后面的命令就好理解了:我们先拿到镜像,再把它跑成容器。
动手之前,先确认本地已经装好 Docker。装好后可以先跑一个最简单的例子:
docker run hello-world
如果屏幕上出现欢迎信息,说明 Docker 本身没有问题。接下来可以跑一个真正有用的服务,比如网页服务器:
docker run -d -p 8080:80 nginx
这里 -d 表示后台运行,-p 8080:80 表示把容器里的 80 端口映射到本机的 8080 端口。跑完后在浏览器打开本机的 8080 端口,就能看到默认网页。想看它在不在跑,可以用 docker ps;想停掉它,可以用 docker stop 加上容器编号或者名字。
接下来做一个自己的小镜像。准备一个只有一句话的网页 index.html,再写一个很短的 Dockerfile:
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
它的意思很直白:以 nginx 为底,把自己的网页复制到默认网页位置。然后在同一目录构建并运行:
docker build -t my-web .
docker run -d -p 8080:80 my-web
再打开本机 8080 端口,看到的就是自己的页面。改了内容后重新构建、重新运行,就能看到变化。这个过程已经包含了容器化最核心的思路:环境跟着代码走。最后留一个小练习:依次跑通 hello-world、nginx 和 my-web,并用 docker ps、docker logs 看看状态和日志;遇到端口占用,先检查是不是已有容器占了同一端口。
- 点赞
- 收藏
- 关注作者
评论(0)