Linux & macOS 部署Docker+配置docker-compose.yaml 教程

一、前置条件

1. 环境要求

  • Linux:CentOS 7+/Ubuntu 18.04+(x86/ARM架构)
  • macOS:macOS 10.15+(Intel/M1/M2/M3架构)
  • 已安装Docker(验证:docker --version
  • docker命令速查表

2. 安装Docker

  • Linux(以Ubuntu为例)
    # 卸载旧版本(如有)
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    # 安装依赖
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # 添加Docker官方源
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    # 安装Docker引擎(包含docker-compose-plugin)
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    # 启动Docker服务并设置开机自启
    sudo systemctl start docker
    sudo systemctl enable docker
    # 配置免sudo(可选)
    sudo usermod -aG docker $USER && newgrp docker
    
  • macOS

二、部署核心场景:本地目录挂载 + 端口映射

目标

将本地目录部署到 8091 端口(以 Nginx 为例,提供静态文件访问)

步骤 1:准备本地测试目录
# 创建目录(Linux/macOS通用)
mkdir -p ~/docker-test/www
# 创建测试文件
echo "<h1>Hello Docker! $(uname -s) $(uname -m)</h1>" > ~/docker-test/www/index.html
步骤 2:方式 1 - 直接用 docker run 部署(快速验证)
# Linux/macOS通用(macOS M系列需适配ARM架构)
docker run -d \
  --name my-local-dir-server \
  -p 8091:80 \
  -v ~/docker-test/www:/usr/share/nginx/html \
  --restart always \
  nginx:alpine
  • 参数说明:
    • -d:后台运行
    • –name:容器命名
    • -p 8091:80:宿主机 8091 端口映射到容器 80 端口
    • -v:本地目录挂载到容器 Nginx 静态目录
    • –restart always:容器异常退出自动重启
步骤 3:方式 2 - 用 docker-compose.yaml 部署(推荐,易维护)
1. 创建 yaml 文件

~/docker-test目录下创建docker-compose.yaml

services:
  my-local-dir-server:
    image: nginx:alpine
    container_name: my-local-dir-server
    ports:
      - "8091:80"
    volumes:
      - ~/docker-test/www:/usr/share/nginx/html
    restart: always
    # CentOS ARM架构/macOS M系列需添加(x86架构可省略)
    platform: linux/arm64/v8
2. 启动容器
# 进入yaml文件目录
cd ~/docker-test
# 启动容器(CentOS 7需用 docker-compose up -d,8+可直接用docker compose)
docker compose up -d
# 兼容CentOS 7写法(如上述命令报错):
# docker-compose up -d
步骤 4:验证部署结果
# 查看容器状态
docker ps
# 访问测试(Linux/macOS通用)
curl http://localhost:8091
  • 浏览器访问:http://localhost:8091,能看到测试页面即成功。

三、yaml 配置核心说明

配置项作用备注
services定义容器服务一个 service 对应一个容器
image指定镜像优先用 alpine 轻量版
container_name容器名称避免随机命名
ports端口映射格式:“宿主机端口:容器端口”
volumes目录挂载格式:“本地路径:容器路径”
restart重启策略always= 始终自动重启
platform架构适配CentOS ARM 架构 /macOS M 系列需指定 linux/arm64/v8

四、常用管理操作

1. 重启容器

# 直接重启
docker restart my-local-dir-server
# 用compose重启(CentOS 7需用docker-compose)
cd ~/docker-test && docker compose restart nginx-server

2. 停止 / 删除容器

# 停止容器
docker stop my-local-dir-server
# 删除容器
docker rm my-local-dir-server
# Compose停止并删除(CentOS 7需用docker-compose)
cd ~/docker-test && docker compose down

3. 查看日志

# 查看容器日志
docker logs my-local-dir-server
# 实时查看日志
docker logs -f my-local-dir-server

五、常见问题解决

1. 镜像拉取失败

  • 原因:默认源在国外,速度慢 / 超时
  • 解决:配置国内镜像源
    • Linux:修改/etc/docker/daemon.json
      {
        "registry-mirrors": ["https://mirror.aliyuncs.com"]
      }
      
      重启 Docker:sudo systemctl restart docker
    • macOS:Docker Desktop → Settings → Docker Engine → 添加上述镜像源 → Apply & Restart

2. 端口被占用

  • 查看占用端口:lsof -i :8091(macOS/Linux)
  • 杀死占用进程:kill -9 <进程ID>
  • 或修改 yaml 中的宿主机端口(如8092:80)

3. 目录挂载无权限(Linux)

  • 解决:给本地目录赋权:chmod -R 755 ~/docker-test/www
### 总结
1. 命令速查表覆盖容器、镜像、Compose、日志、清理5大类核心操作,可直接保存为md文件备用;
2. 部署教程兼容Linux(x86/ARM)和macOS(Intel/M系列),包含`docker run`快速部署和`docker-compose.yaml`规范部署两种方式;
3. 教程中补充了常见问题(镜像拉取、端口占用、权限)的解决方案,适配新手使用场景。

⭐️如果对你有用的话,希望可以点点赞,感谢了⭐️

更多推荐