docker compose 安装、常用命令及参数详解

       在现代应用开发和部署中,Docker已经成为不可或缺的工具。而 docker compose作为Docker生态系统中的重要组成部分,能够帮助我们轻松管理和运行多容器应用程序。本文将详细介绍 Docker Compose 的安装方法、常用命令及其参数,帮助你快速上手并高效使用Docker Compose。

1 docker compose简介

docker compose主要是用于定义和运行多容器Docke 应用程序。通过一个docker-compose.yml文件,你可以配置应用程序的服务、网络以及数据卷等,并使用一条命令启动所有服务。无论是开发、测试还是生产环境,docker compose都能显著简化多容器应用的管理。

2 docker compose离线安装

2.1 下载安装包

github下载地址:https://github.com/docker/compose/tags

如果下载缓慢,可以复制链接地址到迅雷进行下载,这样会快很多

链接地址:https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64

2.2 移动文件并赋予执行权限

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

chmod a+x /usr/local/bin/docker-compose

[root@node3 tool]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

[root@node3 tool]# chmod a+x /usr/local/bin/docker-compose

[root@node3 tool]#

2.3 验证安装

docker-compose -v

[root@node3 tool]# docker-compose -v

Docker Compose version v2.33.1

[root@node3 tool]#

3 docker-compose常用命令

3.1 docker-compose up

作用:启动服务

命令格式:

docker-compose up [选项]

常用参数:

-d:后台运行

--build:启动前重新构建镜像

--force-recreate:强制重新创建容器

示例:

docker-compose up -d

3.2 docker-compose down

作用:停止并删除服务

命令格式:

docker-compose down [选项]

常用参数:

-v:删除数据卷

--rmi all:删除所有镜像

示例:

1)停止并移除容器、网络

docker-compose down

2)停止并移除容器、网络、卷以及镜像

docker-compose down -v --rmi all

3)移除构建的本地镜像

docker-compose down --rmi local

3.3 docker-compose restart

作用:重启服务

示例:

docker-compose restart

3.4 docker-compose ps

作用:查看服务状态

示例:

docker-compose ps

3.5 docker-compose logs

作用:查看服务日志

命令格式:

docker-compose logs [选项]

常用参数:

-f:实时查看日志

--tail n:查看最后n行日志

示例:

1)查看服务日志

docker-compose logs

2)查看特定服务日志

docker-compose logs web

3)查看特定服务最后50行日志

docker-compose logs --tail 50 web

3.6 docker-compose bulid

作用:构建镜像

命令格式:

docker-compose bulid [选项]

常用参数:

--no-cache:不使用缓存构建镜像

示例:

docker-compose build

3.7 docker-compose exec

作用:在运行的容器中执行命令

示例:

docker-compose exec web bash

3.8  docker-compose pull

作用:拉取服务所需的镜像

示例:

docker-compose pull

3.9 docker-compose config

作用:验证docker-compose.yml文件的语法

示例:

docker-compose config

3.10 docker-compose rm

作用:删除已停止的compose应用

命令格式:

docker-compose rm [选项] [服务]

常用参数:

-f:指定使用的compose配置文件,默认配置文件docker-compose.yml

-v:删除容器同时删除由docker-compose.yml文件定义的数据卷

-a:删除所有服务容器

--rmi type:删除镜像,删除构建镜像时产生的中间镜像和构建缓存(type包括all(删除所有镜像)、local(只删除本地镜像)、built(只删除通过docker-compose构建的镜像))

示例:

1)删除所有停止的容器

docker-compose rm

2)删除所有容器

docker-compose rm -a

3)删除容器和卷

docker-compose rm -v

4)使用指定的compose配置文件

docker-compose -f test-compose.yml rm

5)删除镜像

docker-compose rm --rmi local

4 docker-compose.yml配置详解

docker-compose.yml文件是docker compose的核心配置文件,用于定义和运行多容器应用程序。通过这个文件,可以配置服务、网络、卷等资源.

4.1基本结构

docker-compose.yml文件采用YAML格式,通常包含:

version: 3  #指定docker compose文件版本

services:    #定义服务

  service1:  #服务名称

    #服务配置

  service2:

    #服务配置

    ...

networks:    #定义网络

  network1:

    #网络配置

    ...

volumes:      #定义卷

  volume1:

    #卷配置

    ...

4.2 服务配置

4.2.1 image

作用:指定服务使用的镜像

示例:

web:

  image: nginx:latest

4.2.2 build

作用:指定构建镜像的Dockerfile路径

示例:

web:

  build: ./app

4.2.3 posts

作用:映射容器端口到主机端口

示例:

web:

  ports:

    - "80:80"

    - "3306:3306"

4.2.4 volumes

作用:挂载主机目录或卷到容器

示例:

web:

  volumes:

    - ./html:/usr/share/nginx/html

    - db_data:/usr/local/mysql

4.2.5 environment

作用:设置环境变量

示例:

db:

  environment:

    MYSQL_ROOT_PASSWORD: root

    MYSQL_DATABASE: mysqldb

4.2.6 networks

作用:指定服务使用的网络

示例:

web:

  networks:

    - frontend

db:

  networks:

    - backend

4.2.7 healthcheck

作用:定义健康检查

示例:

web:

  healthcheck:

    test: ["CMD", "curl", "-f", "http://localhost"]

    interval: 10s

    timeout: 10s

    retries: 5

4.2.8 restart

作用:设置容器重启策略

可选值:

no:不重启(默认)

always:总是重启

on-failure:失败时重启

unless-stopped:除非手动停止,否则总是重启

示例:

web:

  restart: always

4.3 网络配置

4.3.1 自定义网络

作用:定义自定义网络

示例:

networks:

  frontend:

    driver: bridge

  backend:

    driver: bridge

4.3.2 使用外部网络

作用:使用已存在的外部网络

示例:

networks:

  default:

    external:

      name: localnetwork

4.4 卷配置

4.4.1 自定义卷

作用:定义自定义卷

示例:

volumes:

  db_data:

    driver: local

4.4.2 使用外部卷

作用:使用已存在的外部卷

示例:

volumes:

  db_data:

    external: true

    name: localvolume

4.5 示例

version: 3

services:

  web:

    image: nginx:latest

    ports:

      - "80:80"

    volumes:

      - ./html:/usr/share/nginx/html

    networks:

      - frontend

    depends_on:

      - db

    restart: always

    healthcheck:

      test: ["CMD", "curl", "-f", "http://localhost"]

      interval: 10s

      timeout: 10s

      retries: 5

  db:

    image: mysql:5.7.43

    environment:

      MYSQL_ROOT_PASSWORD: root

      MYSQL_DATABASE: mysqldb

    volumes:

      - db_data:/usr/local/mysql

    networks:

      - backend

networks:

  frontend:

    driver: bridge

  backend:

    driver: bridge

volumes:

  db_data:

    driver: local

5 总结

docker compose是一个强大的工具,可以轻松管理多容器应用程序,通过掌握其基本用法,可以高效地管理和部署多容器应用程序!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,565评论 6 539
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,115评论 3 423
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,577评论 0 382
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,514评论 1 316
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,234评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,621评论 1 326
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,641评论 3 444
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,822评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,380评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,128评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,319评论 1 371
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,879评论 5 362
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,548评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,970评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,229评论 1 291
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,048评论 3 397
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,285评论 2 376

推荐阅读更多精彩内容