Docker 入门:跑起第一个容器,先分清镜像、容器与数据卷
新手学 Docker,最容易被三个词绕晕:镜像、容器、数据卷。记住一句话就顺了:镜像是做好的模板,容器是按模板跑起来的实例,数据卷是把数据从容器里单独存出来的办法。模板本身不会变,实例可以随时创建和删除,而真正重要的数据,最好不要只放在容器内部。
镜像相当于一个已经装好系统和软件的只读包,比如 nginx 镜像里就带有网页服务器程序,你不需要在电脑上一步步安装配置,直接拉取就能用。镜像可以分层复用,改动一层只需更新那一层。镜像名后面的标签要注意,例如 nginx:latest 表示最新版,实际使用建议写明具体版本,避免今天和明天拉到的内容不一样。
容器是镜像跑起来的进程实例。同一个镜像可以同时跑出多个容器,它们之间默认是隔离的,就像用同一份图纸盖出几间结构相同但住户不同的房子。容器停止或删除后,容器内部新产生的数据默认也会随之消失。临时测试很方便,但不要把唯一一份数据只留在容器里。
数据卷就是为了解决这个问题。把宿主机目录或命名卷挂载到容器内部,数据就有了独立的存放位置,容器删了重建,只要重新挂载同一个卷,数据还在。端口映射也是类似思路:容器里的 80 端口不会自动出现在宿主机上,需要用 -p 把它映射出来,外面才能访问。
先验证安装是否成功:
docker version
docker run hello-world
看到欢迎信息,就说明 Docker 可以正常工作。接下来跑一个最简单的网页服务:
docker run -d --name my-web -p 8080:80 nginx
docker ps
docker logs my-web
这条命令是以后台方式运行一个名叫 my-web 的容器,把容器里的 80 端口映射到本机 8080 端口。在浏览器打开 localhost:8080,就能看到默认欢迎页。用完之后先停止再删除:docker stop my-web,docker rm my-web,及时清理才不会堆满不用的容器。
想发布自己的页面,可以写一个很小的 Dockerfile:
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
把它和 index.html 放在同一目录,然后构建并运行:
docker build -t my-page:1.0 .
docker run -d -p 8080:80 my-page:1.0
这样就完成了一个从代码到可访问服务的最小闭环。最后提醒几个常见问题:端口被占用时先换一个宿主机端口;重要数据一定要挂载数据卷,删除容器前先确认数据位置;调试时先看 docker logs,往往比猜测更快。建议今天就亲手走一遍:拉取镜像、启动容器、访问页面、查看日志、停止删除,再给自己的页面做一个镜像,走完这一圈,Docker 就不再只是一个名词。
- 点赞
- 收藏
- 关注作者
评论(0)