docker-compose使用方法

我们用容器的时候,往往需要用到类似kubernetes里一个Pod支持多个容器的情况,但是Pod是k8s里面的概念,安装k8s又比较重,这时就可以用docker-compose来模拟。docker-compose是用于定义和运行多容器 Docker 应用程序的工具,一个compose定义的多个容器共享网络命名空间、文件系统卷、服务发现、生命周期管理、资源限制、日志、依赖顺序等。

docker-compose的安装方法也很简单,下载二进制文件即可:$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 装好之后用docker-compose version命令验证一下。

使用方法也很简单,定义一个docker-compose.yml文件,注意就得叫这个名字,该文件内容如下:

version: '3.8'

services:
  mysql:
    image: test/library/mysql-x86:1206
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    network_mode: host # 使用宿主机网络

  app:
    image: test/library/tomcat-x86:1206
    volumes:
      - /home/testpod/config.properties:/usr/local/config/config.properties # 挂载配置文件
    network_mode: host # 使用宿主机网络
    depends_on:
      - mysql # 确保 MySQL 先启动

然后在docker-compose.yml同目录下执行命令docker-compose up即可拉起多个容器。删除用docker-compose down. 注意,上面挂载文件时,需要现在主机上创建主机端文件,否则容器不能完全启动。

如下所示,是一个mysql容器的docker-compose文件,使用它可以创建一个名为 mysql 的服务:

version: "2.1" #Docker Compose 文件的版本声明。请确保你的Docker Compose工具支持该版本。
services:

  mysql:
    image: registry.fit2cloud.com/fit2cloud3/mysql:5.7.25 # 指定容器使用的镜像
    container_name: mysql    # 指定容器的名称
    ports:
      - 3306:3306   # 将主机的3306端口映射到容器的3306端口
    restart: on-failure
    healthcheck:   # 为 mysql 服务添加的健康检查配置,这将确保在启动时检查MySQL服务是否健康,以及在运行时是否继续保持健康。
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      interval: 5s
      timeout: 3s
      retries: 10
    environment:
      MYSQL_ROOT_PASSWORD: Password123@mysql  # 设置容器的环境变量,这里配置mysql的密码
    volumes:
      - /opt/demo/conf/my.cnf:/etc/mysql/conf.d/my.cnf   # 挂载卷,将主机的/opt/demo/conf/my.cnf目录映射到容器的/etc/mysql/conf.d/my.cnf目录
      - /opt/demo/bin/mysql:/docker-entrypoint-initdb.d/
      - cmp-mysql-data:/var/lib/mysql # 挂载卷,将cmp-mysql-data映射到容器的/var/lib/mysql目录
    networks:
      - demo-network ## 将容器连接到demo-network网络

volumes:
  cmp-mysql-data:
    driver_opts:
      type: none
      device: /opt/demo/data/mysql
      o: bind

输入docker-compose -f xx.yaml up -d 命令后,docker引擎会自动 docker-proxy -proto tcp -host-ip :: -host-port 3306 -container-ip 172.19.0.3 -container-port 3306 把容器的端口服务暴露出来。可以通过docker network list以及docker network inspect demo-network查看详细网络信息。

常用命令如下所示:

  • docker-compose up -d; docker-compose -f xx.yaml -d 启动服务
  • docker-compose down 停止服务并删除containers, networks, images, volumes未删除
  • docker-compose down -v xxx 停止服务并删除containers, networks, images, 并删除volumes
  • docker-compose ps 列出所有容器
  • docker-compose logs 查看服务日志
  • docker-compose logs xxx -f 查看docker-compose里面的某个容器的日志,一直打印类似tail -f
  • docker-compose start 启动服务
  • docker-compose stop 停止服务
  • docker-compose up -d --force-recreate 重建,使用修改了docker-compose.yml中的环境变量(restart不能生效)但是文件系统都不会重建,临时文件会丢失
  • docker-compose up --pull always -d security-analysis 每次强制拉取最新的镜像
posted @ 2025-07-01 10:10  JaneySJ  阅读(147)  评论(0)    收藏  举报