Docker 容器入门:从拉取镜像到跑起第一个服务
为什么用容器
传统部署把代码、依赖、系统库混在一台机器上,换个环境就要重新装一遍。容器把应用和它的依赖打包成一个镜像,在任何装了容器运行时的机器上行为一致。这也是它成为云上部署默认形态的原因。
装好运行时
以 Ubuntu 为例,安装后用一条命令验证:
docker --version
docker run hello-world
第二条命令会拉取一个小镜像并打印提示信息。如果能看到输出,说明运行时已经就绪。
跑起第一个服务
以 Nginx 为例,一行命令就能启动:
docker run -d --name web -p 8080:80 nginx:alpine
`
拆开看每个参数:-d 表示后台运行,--name 给容器起个名字方便后续操作,-p 8080:80 把宿主机的 8080 端口映射到容器内的 80 端口,nginx:alpine 指定镜像和标签。
启动后用浏览器访问该映射端口就能看到默认欢迎页。实际部署时请把地址替换成你自己的访问入口。
数据要持久化
容器删掉,里面的数据就没了。需要把目录挂出来:
docker run -d --name web2 -p 8081:80 -v /data/nginx/html:/usr/share/nginx/html:ro nginx:alpine
`
-v 左边是宿主机目录,右边是容器内路径,ro 表示只读挂载。这样容器重建时内容还在。
查看状态和日志
docker ps
docker logs -f web
docker stats
第一条看运行中的容器,第二条实时跟日志,第三条看资源占用。排查问题基本靠这三条命令起步。
五个新手常踩的坑
第一,端口被占用。启动报 bind: address already in use,先用 ss -tlnp 看是哪个进程占了端口,再改映射。
第二,容器一启动就退出。用 docker logs 看退出前的输出,多数是配置路径写错或缺少必需的环境变量。
第三,镜像拉取慢或超时。配置国内镜像加速地址,改完重启运行时生效。
第四,改了配置不生效。容器内改了文件但没有重启,或者改的是镜像内文件而不是挂载目录。
第五,磁盘被占满。docker system prune 可以清理停止的容器和悬空镜像,但执行前要确认没有还需要的数据。生产环境不要随手执行带 -a 的清理。
小结
容器本身不复杂,核心就是镜像、容器、网络、存储四件事。把端口映射和目录挂载这两点理解透,日常部署八成的问题都能自己解决。
``````````
- 点赞
- 收藏
- 关注作者
评论(0)