开始使用DOCKER COMPOSE V2

news/2024/10/31 3:27:06/

Compose V2 项目启动于2021年6月,直到2022年4月26号,发布了GA版本。在发布GA版本后,社区也宣布对于Compose V1将不会再进行功能更新,将在6个月后结束生命周期(EOL),期间会进行关键的安全和错误修复。

V1与V2的兼容对比

确保 V1 和 V2 之间的兼容性对于日常工作流程至关重要,下面是V2中两个关键的更改

更改潜在影响迁移
V2原生支持BuildKit,并且默认开启开发者在V2中将默认使用BuildKit进行镜像构建可通过设置环境变量不使用 DOCKER_BUILDKIT=0
容器名字中使用 - 替代了 _ 作为分隔符如果在脚本中使用了容器名字,这可能会导致错误可以通过 “–compatibility” 标记来关闭此更改

关于更多的兼容性更改,请查看兼容性文档

如何安装Compose V2

Windows,MacOS和Linux上使用Docker Desktop,就自带了Compose V2,可通过命令 docker compose 执行。也可以通过配置“Use Docker Compose V2“来设置 docker-compose 别名到 docker compose

desktop-compose-v2

如果没有使用Docker Desktop for Linux,而是直接使用的Docker Engine,则需要额外安装 docker-compose-plugin 或者独立的二进制包。

例如对于Ubuntu,可以通过Docker官方的APT源直接安装

sudo apt update
❯ sudo apt install docker-compose-plugin

其他Linux, 例如在我的 openSUSE 上,通过手动从Github下载二进制文件进行安装(注意选择版本和平台架构)

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}mkdir -p $DOCKER_CONFIG/cli-plugins
❯ wget https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64
❯ mv docker-compose-linux-x86_64 $DOCKER_CONFIG/cli-plugins/docker-compose
❯ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

执行一下命令测试

docker compose version
Docker Compose version 2.6.0

更多安装方式,请查看官方文档。

Compose V2的优势

在Docker CLI中快速交付新功能

  • 支持GPU主机 - 如果Docker主机有GPU设备(显卡)并且Docker引擎进行了相关配置, 则Compose服务可以定义GPU设备的预留。
  • 支持配置服务启用(Profiles) - 通过选择性服务器启用来为多种用途和环境启动Compose应用模型,如下Compose文件
version: "3.9"
services:frontend:image: frontendprofiles: ["frontend"]phpmyadmin:image: phpmyadmindepends_on:- dbprofiles:- debugbackend:image: backenddb:image: mysql

默认执行 docker compose up 将只会启动 backenddb 服务,要启动相应配置的服务,需要使用 --profile 标记或者设置环境变量 COMPOSE_PROFILES,例如

docker compose --profile debug --profile frontend up
❯ COMPOSE_PROFILES=frontend,debug docker compose up
  • 新增了 cp 命令 - 在服务容器和本地文件系统直接拷贝文件和目录
  • 新增了 ls 命令 - 列出当前环境中的Compose项目(应用栈)

开发到生产的无缝转换

通过云集成项目,可以容易的使用Compose V2将多容器应用部署到AWS ECS或者Azure ACI环境。

具体示例可参考 Deploying WordPress to the Cloud。

在Golang中创建一个同构的Docker生态系统

在Compose V2之前,V1是使用Python语言编写的,不在Docker的语言生态系统里。而V2使用Golang语言编写,可以提供来自Moby、CLI或任何基于Golang的项目代码,减少了很多通过Python重写新功能或缺陷的开发,容易从其他Docker工具(例如BuildKit)增加新功能到Compose中。

通过Golang,现在可以发布一个静态的二进制执行文件,相比Python,大大简化了更新和依赖管理。

在没有Compose文件的情况下执行命令

Compose V2可以在以下情况下通过 --project-name|-p 选项来管理运行的Compose项目容器服务

  • 当前目录不包含项目Compose文件(不在Compose项目文件目录下)
  • 不通过 --file 标记指定Compose文件
  • 不通过 --project-directory 标记指定Compose项目目录

可执行的命令: psexec,startstoprestartdown

可以先通过 docker compose ls 列出当前环境的Compose项目

docker compose ls
NAME                STATUS              CONFIG FILES
dbweb               running(1)          docker-compose.yml
monitor             running(1)          /home/mengz/dockerapp/monitor/docker-compose.yml
traefik             running(1)          /home/mengz/dockerapp/traefik/docker-compose.yml
truenas             running(1)          /home/mengz/dockerapp/truenas/docker-compose.yml

然后通过 -p <项目名> 命令 来管理项目服务

docker compose -p dbweb ps
NAME                COMMAND             SERVICE             STATUS              PORTS
dbweb_pgadmin       "/entrypoint.sh"    pgadmin             running             443/tcp❯ docker compose -p dbweb exec pgadmin sh
/pgadmin4 $ exit

总结

这里简单介绍了Docker Compose V2的一些特性和功能,随着V1的逐渐淘汰,我们要拥抱V2,并且尝试其提供的新功能。
关于详细的Docker Docker,请参考官方文档。

参考:

  • Announcing Compose V2 General Availability
  • Install Docker Compose

同时发布在【Mengz’s Blog】


http://www.ppmy.cn/news/548506.html

相关文章

卸载V2ray

停用并卸载服务&#xff08;systemd&#xff09;&#xff1a; systemctl stop v2ray systemctl disable v2ray 停用并卸载服务&#xff08;sysv&#xff09;&#xff1a; service v2ray stop update-rc.d -f v2ray remove 然后删除以下文件&#xff1a; /etc/v2ray/* /usr…

# Kinect V2 简介

Kinect V2 简介 文章为个人学习笔记 整理了一些网络资源和视频知识。 提示&#xff1a;自己也是小白&#xff0c;文章不免会出现不少的错误。 文章目录 Kinect V2 简介前言一、Kinect V2是什么&#xff1f;二、硬件信息1.摄像头结构2.连接线 三、软件准备1.kinect for window …

使用CISCO配置RIP v2动态路由

随着OSPF和IS-IS的出现&#xff0c;RIP的使用渐渐减少&#xff0c;仅适用于小型网络 下面为拓扑图 首先将RIP改成version 2Router(config)# router rip Router(config-router)# version 2 RIP v2动态路由配置中&#xff0c;路由表仅填写直连网段&#xff0c;以中间Router3为例…

C-V2X 技术介绍

缩略语 3GPP&#xff08;the 3rd Generation Partnership Project&#xff0c;第三代合作伙伴项目&#xff09; CA&#xff08;Certificate Authority&#xff0c;证书授权&#xff09; C-ITS(Cooperative Intelligent Transportation System&#xff0c;协作式智能交通系统…

MP4V2封装h265

mp4v2一般是用来做h264到mp4的封装&#xff0c;后来经过总结和优化&#xff0c;出现了支持h264/h265的版本&#xff0c;链接如下&#xff1a; mp4v2-h265 从以上链接中下载的MP4V2源码 相关接口如下&#xff1a; MP4V2_EXPORT MP4TrackId MP4AddH265VideoTrack(MP4FileHand…

轻量级模型:MobileNet V2

一、论文&#xff1a; https://arxiv.org/abs/18 非官方Caffe代码&#xff1a;https://github.com/shicai/MobileNet-Caffe 二、论文理解 MobileNet V2 是对 MobileNet V1 的改进&#xff0c;同样是一个轻量级卷积神经网络。 1&#xff09;基础理论--深度可分离卷积&#…

自动驾驶技术-环境感知篇:V2X技术的介绍

V2X技术概述 在前面的几篇文章分别介绍了自动驾驶在环境感知领域的相关技术点&#xff0c;主要介绍了如何通过雷达配合视觉技术实现车辆自身的智能。其实在环境感知方面&#xff0c;除了利用车辆自身的智能&#xff0c;还可以借助外部环境实现信息的获取&#xff0c;这一类技术…

V2X车联网-学习整理笔记

一致性测试预备条件&#xff1a; 1.具备WIFI或者LAN通信能力 2.具备GNSS能力&#xff0c;能够获取设备经纬度以及授时 3.具备RF通信能力 aid为应用标识&#xff0c;应用标识分配如下&#xff1a; 111&#xff1a;普通车辆状态 112&#xff1a;普通车辆关键事件提醒 113&#x…