目录
简介
- Docker Compose是一个用于定义和运行多个Docker容器的工具。它使用简单的YAML文件来配置应用程序的服务、网络和卷等方面的设置。
- 使用Docker Compose可以轻松地定义和管理多容器应用程序。你可以将整个应用程序的不同组件(例如数据库、Web服务器和应用程序服务器)放在不同的容器中,并使用Compose来定义它们之间的关系和配置。
- 在一个Compose文件中,你可以指定每个服务的镜像、端口映射、环境变量、卷挂载等设置。你还可以定义网络,使容器能够相互通信,并且可以使用依赖关系来确保服务按正确的顺序启动。
- 使用Docker Compose是非常简单的。你只需创建一个docker-compose.yaml文件,然后使用
docker-compose up
命令来启动你的应用程序。Compose会自动下载所需的镜像,并根据配置启动容器。 - 除了启动应用程序,Compose还提供了其他一些有用的命令,如
docker-compose down
用于停止并删除所有相关容器,docker-compose ps
用于查看正在运行的容器状态等。 - 总的来说,Docker Compose是一个简单而强大的工具,用于定义和管理多容器应用程序。它使得在开发、测试和部署环境中轻松构建和管理复杂的容器化应用变得更加容易。
docker-compose基础概念
Docker Compose是一个用于定义和运行多个Docker容器的工具。它允许您使用YAML文件来配置应用程序所需的服务、网络和卷等资源,并通过简单的命令来管理整个容器化应用的生命周期。
基础概念包括以下几个方面:
- 服务(Services):Compose中的一个服务对应一个容器。服务可以包含多个副本(replicas)。
- 容器(Containers):Compose根据服务配置创建和管理容器。每个容器都是服务的一个实例。
- 网络(Networks):Compose为应用程序定义了一个默认网络,使得服务可以相互通信。您还可以创建自定义网络来隔离服务。
- 卷(Volumes):Compose可以为容器挂载卷,以便数据可以在容器之间共享和持久化存储。
- 依赖关系(Dependencies):您可以在Compose文件中指定服务之间的依赖关系,以确保正确的启动顺序。
通过编写Compose文件,您可以定义应用程序所需的所有服务、其镜像、端口映射、环境变量、卷等配置。然后,使用docker-compose命令运行、停止、重启或删除整个应用程序。
为什么要使用docker-compose
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它简化了多容器应用程序的部署过程。使用 Docker Compose 可以通过编写一个 YAML 文件来定义应用程序的服务、网络和存储卷等方面的配置,并通过一个命令来启动、停止和管理这些容器。
使用 Docker Compose 的好处包括:
- 简化部署:通过一个文件定义多个容器的配置,可以轻松地在不同环境中部署应用程序,而无需手动配置多个容器。
- 高度可移植性:Docker Compose 文件中包含了对应用程序所需的所有依赖关系和配置,可以在不同的主机上轻松地重新创建相同的开发和生产环境。
- 灵活性和可扩展性:可以定义多个服务,并通过链接或共享网络来实现服务之间的通信,支持自定义网络配置和容器间的连接。
- 一致性和可维护性:通过 Docker Compose 统一管理多个容器,使得整个应用程序的部署、启动、停止和调试更加一致和可维护。
总之,使用 Docker Compose 可以简化多容器应用程序的部署,提高开发效率,增强应用程序的可移植性和可扩展性。
YAML文件格式及编写注意事项
1、YAML文件格式
YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式。它使用空格缩进来表示层级关系,并使用冒号来标记键值对。YAML文件通常以.yaml
或.yml
作为文件扩展名。
以下是一个示例的YAML文件格式:
# 注释以#开头
key1: value1
key2: value2
# 列表使用短横线 -
list:
- item1
- item2
- item3
# 嵌套结构
nested:
key3: value3
key4:
- item4
- item5
在这个示例中,有两个键值对key1: value1
和key2: value2
,一个名为list
的列表,以及一个嵌套结构nested
,其中包含键值对key3: value3
和一个名为key4
的列表。
- YAML文件格式简洁易读,常用于配置文件、数据序列化和存储结构化数据等场景。
- YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号[ ] 括起来,bash用花括号{ } 括起来。
2、YAML格式的注意事项
- 不支持制表符tab键缩进,只能使用空格缩进
- 通常开头缩进2个空格
- 字符后缩进1个空格,如冒号【:】、逗号【,】、横杠【-】
- 用#号表示注释
- 如果包含特殊字符用单引号【’ '】引起来作为普通字符,如果用双引号【“ ”】表示特殊字符本身的意思,
- 布尔值必须用【“ ”】括起来
- YAML区分大小写
3、YAML数据结构案例
#键值对表示
animal:pets
#数组:一组按次序排列的列表
- cat
- dog
- goldfish
#布尔值
debug: "true"
debug: "false"
#yaml实例
languages: #序列的映射
- java
- Golang
- Python
websites: #映射的映射
Baidu: www.baidu.com
Wangyi: www.163.com
Souhu: www.souhu.com
#或者
languages: ["java","Golong","Python"]
websites:
Baidu:
www.baidu.com
Wangyi:
www.163.com
Souhu:
www.souhu.com
#Json格式
{
languages: [
'Java',
'Golong',
'Python',
],
websites: [
Baidu: 'www.baidu.com',
Wangyi: 'www.163.com',
Souhu: 'www.souhu.com',
]
}
Docker Compose 配置常用字段
1、Docker Compose配置常用字段
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它使用 YAML 文件来配置容器的各项参数。以下是 Docker Compose 常用的配置字段:
- version: 指定 Docker Compose 文件的版本号。
- services: 定义要运行的服务,可以包含多个服务。
- image: 指定要使用的镜像。
- build: 指定构建镜像所需的 Dockerfile 路径(要指定的Dockerfile文件需要在build标签的子级标签中用dockefile标签指定)。
- dockerfile:构建镜像上下文路径。
- context:可以是dockerfile路径,或者时执行git仓库的url地址。
- hostname:在容器内设置内核参数。
- ports: 指定容器的端口映射,暴露容器端口,与-p相同,但是端口不能低于60。
- volumes: 挂载一个宿主机目录或命令卷到容器,命令卷要在顶级volumes定义卷名称
- volumes_from:从另一个服务或容器挂载卷,可选参数:ro和rw(仅版本‘2’支持)
- networks: 指定容器所连接的网络。
- network-mode:设置容器的网络模式
- environment: 设置容器的环境变量。
- command: 指定容器启动时要执行的命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令)
- container_name:指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。
- privileged:用来给容器root权限,注意是不安全的,true
- depends_on: 指定服务之间的依赖关系,此标签用于解决容器的依赖,启动先后问题。如启动应用容器,需要先启动数据库容器。php:depends_on:- apache- mysql
- restart: 指定容器在退出后是否自动重启,重启策略:1、no,默认策略,在容器退出时不重启容器2、on-failure,在容器非正常退出时(退出状态非0),才会重启容器3、on-failure:3 在容器非正常退出时,重启容器,最多重启3次4、always,在容器退出时总是重启容器,5、unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。
- links: 指定连接到其他服务的别名。
- expose: 指定容器暴露的端口,但不进行主机端口映射。
- healthcheck: 指定容器的健康检查配置。
- labels: 为容器添加标签,用于元数据描述。
- logging: 配置容器的日志记录。
- tmpfs: 将临时文件系统挂载到容器中。
- cap_add: 添加额外的 Linux 特权。
- cap_drop: 限制容器的 Linux 特权。
- devices: 指定容器使用的设备。
- sysctls: 设置容器的内核参数。
- ulimits: 设置容器的资源限制。
- cgroup_parent: 指定容器所属的 cgroup 父级。
- stop_grace_period: 指定容器停止的优雅期限。
- deploy: 指定部署和运行服务相关配置,只能在swarm模式使用
- configs: 指定服务使用的配置文件。
- secrets: 指定服务使用的敏感数据。
- scale: 设置服务的副本数量。
- external_links: 连接到外部容器。
- extends: 继承其他服务的配置。
这些是一些常用的 Docker Compose 配置字段,可以根据具体需求进行配置。请注意,这只是其中的一部分,Docker Compose 还有更多高级功能和配置选项。
2、Docker-compose常用命令
运行这些命令需要结合docker-compose一起使用。
且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错。
- docker-compose up:创建和启动容器
- docker-compose down:停止容器,删除容器、网络、数据卷和镜像
- docker-compose ps:列出容器,查看容器状态
- docker-compose logs:查看容器日志
- docker-compose build:重新构建服务
- docker-compose restart:重启容器
- docker-compose stop:停止容器
- docker-compose start:启动容器
- docker-compose rm:删除容器
- docker-compose exec:在容器内执行命令
- docker-compose pull:拉取镜像
- docker-compose push:推送镜像
- docker-compose config:检查配置文件
- docker-compose events:查看容器事件
- docker-compose scale:指定一个服务容器启动数量
- docker-compose top:显示正在运行的容器进程
安装docker-compose
1.下载和安装docker-compose
一般按照官网下载的地址去下载curl -L https://github.com/docker/compose/releases/download/2.17.2/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
或者使用国内的地址sudo curl -L https://get.daocloud.io/docker/compose/releases/download/2.17.2/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
虽然下载很快,但是容易报错,无法使用
因此特意上传一个截至目前最新版本的,版本为:docker-compose v2.17.2-linux-x86-64
链接: docker-compose
官网地址:
下载后,上传到服务器已经建好的目录:/usr/local/bin/,然后赋予权限:
sudo chmod +x /usr/local/bin/docker-compose
查看版本:docker-compose -v ,如果报找不到路径,建立软链接:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
验证是否安装成功:
docker-compose --version #之前的v1版本命令是docker-compose --version
2.docker-compose卸载
rm $DOCKER_CONFIG/cli-plugins/docker-compose