温馨提示×

ubuntu如何使用docker Compose

小樊
48
2025-11-02 13:26:54
栏目: 智能运维

1. 安装Docker(前提条件)
Docker Compose依赖Docker环境,需先确保系统已安装Docker。若未安装,可通过以下命令完成安装:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io  # 推荐安装社区版(CE)
sudo systemctl start docker  # 启动Docker服务
sudo systemctl enable docker  # 设置开机自启

安装完成后,可通过docker --version验证Docker是否安装成功。

2. 安装Docker Compose
Docker Compose需单独安装,推荐使用官方GitHub发布的最新稳定版本(截至2025年11月,最新版本为v2.21.0):

# 下载Docker Compose二进制文件(替换为最新版本号)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装(输出版本号即为成功)
docker-compose --version

若需创建符号链接(方便全局调用),可执行:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

3. 创建docker-compose.yml文件
在项目目录下创建docker-compose.yml文件(如myproject目录),用于定义服务、网络、卷等配置。以下是一个基础示例(包含Nginx web服务和MySQL数据库服务):

version: '3'  # 指定Compose文件格式版本(推荐3及以上)
services:     # 定义服务列表
  web:        # 服务名称(自定义)
    image: nginx:latest  # 使用的镜像(可从Docker Hub拉取)
    ports:               # 端口映射(主机端口:容器端口)
      - "8080:80"        # 主机8080端口映射到容器80端口
  db:         # 另一个服务
    image: mysql:5.7     # 使用MySQL 5.7镜像
    environment:         # 环境变量(配置数据库)
      MYSQL_ROOT_PASSWORD: example  # root用户密码
      MYSQL_DATABASE: mydb          # 创建的数据库名
      MYSQL_USER: user              # 创建的普通用户
      MYSQL_PASSWORD: password      # 普通用户密码

可根据实际需求调整服务配置(如添加volumes挂载卷、depends_on定义服务依赖等)。

4. 启动服务
docker-compose.yml文件所在目录下,运行以下命令启动所有服务:

docker-compose up -d  # -d表示在后台运行服务

启动后,Docker会自动拉取镜像(若本地无对应镜像)、创建容器,并根据配置启动服务。可通过docker-compose ps查看服务运行状态(显示“Up”即为运行中)。

5. 常用管理服务命令

  • 查看服务日志docker-compose logs(查看所有服务日志)或docker-compose logs -f web(实时查看web服务日志);
  • 进入容器docker-compose exec web /bin/bash(进入web服务的容器终端,执行bash命令);
  • 停止服务docker-compose down(停止并删除所有容器、网络,保留数据卷和镜像);
  • 重启服务docker-compose restart(重启所有服务);
  • 重建镜像docker-compose build(根据Dockerfile重建服务镜像,适用于修改镜像配置后)。

6. 高级配置(可选)

  • 定义网络:在docker-compose.yml中添加networks字段,可实现服务间通信(如bridge桥接网络、host主机网络);
  • 挂载卷:通过volumes字段将主机目录或命名卷挂载到容器中,实现数据持久化(如./data:/usr/share/nginx/html将主机data目录挂载到容器Nginx默认页面目录);
  • 依赖关系:使用depends_on字段定义服务启动顺序(如web服务依赖db服务,则web会在db启动后再启动)。

注意事项

  • 若遇到权限问题(如docker-compose命令报错“permission denied”),可将当前用户添加到docker组:sudo usermod -aG docker $USER,然后重新登录生效;
  • 定期更新Docker Compose至最新版本(重复“安装Docker Compose”步骤,替换为最新版本号),以获取安全补丁和新功能。

0