linux容器部署核心是装好运行时、配对开发流、守住数据和安全边界;需正确安装docker并添加用户到docker组,配置国内镜像源,合理使用绑定卷与命名卷,控制端口暴露,并通过日志、健康检查等保障可观测性。

Linux容器环境部署不难,但容易卡在权限、网络或镜像拉取这些细节上。核心就三件事:装好运行时、配对开发流、守住数据和安全边界。
安装Docker并确保能正常用
别跳过用户组添加这步——这是90%新手“Permission denied”报错的根源。
- 先卸载旧版(尤其centos):
sudo yum remove docker docker-client docker-common docker-engine - 用国内源装CE(推荐阿里云镜像):
curl -fssl https://get.docker.com | sh -s -- --mirror Aliyun - 启动服务并设开机自启:
sudo systemctl enable docker && sudo systemctl start docker - 关键一步:把当前用户加进docker组:
sudo usermod -aG docker $USER,然后退出终端重登 - 验证:
docker run hello-world能输出欢迎信息才算真正通了
让开发流程跑起来:镜像、容器、编排三件套
不是所有项目都从Dockerfile开始写。多数团队已有现成镜像或compose配置,直接复用更高效。
- 拉镜像优先走国内加速源:编辑
/etc/docker/daemon.json加入阿里云镜像地址(如"https://xxx.mirror.aliyuncs.com"),再sudo systemctl restart docker - 单容器调试用
docker run -it --rm -p 8080:80 nginx快速验端口和基础服务 - 多服务项目直接上
docker-compose up -d,前提是项目里有docker-compose.yml - 想进容器改配置?用
docker exec -it /bin/bash,别硬重启
数据不丢、访问可控、日志可查
容器删了,代码和数据库还在不在,才是真功夫。
- 代码挂载用绑定卷(bind mount):
-v $(pwd)/src:/app/src,改主机文件实时生效 - 数据库等状态数据必须用命名卷(named volume):
volumes: [db-data:/var/lib/mysql],避免容器删除后数据蒸发 - 对外暴露端口只开必要的,比如Web服务开80/443,MySQL默认不映射到宿主机
- 查问题先看日志:
docker logs -f,加--tail 100只看最新100行
进阶要点:本地开发更顺、上线前少踩坑
生产环境要求更高,但很多原则其实在本地就能养成习惯。
- 写Dockerfile时用多阶段构建(multi-stage),最终镜像只含运行时,体积小、攻击面小
- 敏感配置(密码、密钥)别硬编码,用
docker run --env-file .env或 compose 的env_file字段 - 测试阶段加健康检查:
healthcheck: {test: ["CMD", "curl", "-f", "http://localhost:3000/health"], interval: 30s} - CI/CD中用
docker build --no-cache避免缓存导致依赖没更新
基本上就这些。装得稳、跑得顺、留得住、看得清——容器环境就立住了。