Docker Compose创建镜像服务

ops/2025/1/23 12:21:48/

什么是Docker Compose

使用Docker Compose,可以使用YAML配置文件(称为Compose文件)来配置应用程序的服务,然后使用Compose CLI从配置中创建并启动所有服务 。

Compose文件的默认路径是compose.yaml(首选)或compose.yml放置在工作目录中。Compose 还支持docker-compose.yaml和docker-compose.yml以向后兼容早期版本。如果两个文件都存在,Compose 会首选规范的compose.yaml。

Compose文件或文件遵循Compose规范提供的有关如何定义多容器应用程序的 compose.yaml规则。这是正式Compose规范的Docker Compose实现。

Docker Compose 的主要优点

官文机翻:

使用 Docker Compose 具有多种优势,可以简化容器化应用程序的开发、部署和管理:

简化控制:Docker Compose 允许您在单个 YAML 文件中定义和管理多容器应用程序。这简化了编排和协调各种服务的复杂任务,使管理和复制应用程序环境变得更加容易。

高效协作:Docker Compose 配置文件易于共享,促进开发人员、运营团队和其他利益相关者之间的协作。这种协作方法可实现更顺畅的工作流程、更快的问题解决速度并提高整体效率。

快速应用程序开发:Compose 缓存用于创建容器的配置。当您重新启动未更改的服务时,Compose 会重新使用现有容器。重复使用容器意味着您可以非常快速地更改环境。

跨环境的可移植性:Compose 支持 Compose 文件中的变量。您可以使用这些变量针对不同的环境或不同的用户自定义您的组合。

广泛的社区和支持:Docker Compose 受益于充满活力的社区,这意味着丰富的资源、教程和支持。这个社区驱动的生态系统有助于 Docker Compose 的持续改进,并帮助用户有效地解决问题。

安装镜像示例

以安装Portainer举例,Portainer是一个docker图形化管理工具。

编写docker-compose文件

Portainer部署的步骤比较简单,我们还是以docker-compose文件的形式完成Portainer的安装,首先我们需要需要编写的名为docker-compose.yml的文件,内容如下

version: '3.8'
services:portainer:image: portainer/portainer-ce:latestcontainer_name: portainerrestart: alwaysports:- "9000:9000"volumes:- /var/run/docker.sock:/var/run/docker.sock- /opt/docker/sys/portainer:/data

完成后,我们将这个文件上传到我们的服务器即。

初始化并配置容器

将配置文件上传之后我们就可以尝试启动了,为了方便查看服务是否可以正常启动,我们还先以前台运行的方式启动,到达docker-compose.yml文件位置,键入前台启动命令

# 安装成功,如需后台运行,添加参数:-d
docker-compose -f docker-compose.yml up

执行日志

[root@centos72 portainer]# docker compose -f ./docker-compose.yml up
WARN[0000] /opt/docker/sys/portainer/docker-compose.yml: `version` is obsolete 
[+] Running 12/12✔ portainer Pulled                                                                                                                                                                                           88.6s ✔ dc8df0f2921e Pull complete                                                                                                                                                                                 0.6s ✔ c82aa9c9fb45 Pull complete                                                                                                                                                                                 0.6s ✔ d40df14c1d7a Pull complete                                                                                                                                                                                33.2s ✔ a3939f2dc487 Pull complete                                                                                                                                                                                37.9s ✔ 204b2fbb824e Pull complete                                                                                                                                                                                39.9s ✔ a53c840f28bf Pull complete                                                                                                                                                                                66.2s ✔ 9e1dadc4be73 Pull complete                                                                                                                                                                                67.1s ✔ 6f01ec19fa2b Pull complete                                                                                                                                                                                69.4s ✔ e2f767fe3885 Pull complete                                                                                                                                                                                71.5s ✔ 793e77bf062e Pull complete                                                                                                                                                                                72.7s ✔ 4f4fb700ef54 Pull complete                                                                                                                                                                                73.8s 
[+] Running 2/2✔ Network portainer_default  Created                                                                                                                                                                           0.1s ✔ Container portainer        Created                                                                                                                                                                           2.2s 
Attaching to portainer
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/internal/ssl/ssl.go:80 > no cert files found, generating self signed SSL certificates |
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/chisel/service.go:228 > generated a new Chisel private key file | private-key=/data/chisel/private-key.pem
portainer  | 2025/01/20 13:00:46 server: Reverse tunnelling enabled
portainer  | 2025/01/20 13:00:46 server: Fingerprint u12NgE5z0p1l4BzifRiZq3cCd8PY5RFTYnwADFGdV1xxeLgw8=
portainer  | 2025/01/20 13:00:46 server: Listening on http://0.0.0.0:8000
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:655 > starting Portainer | build_number=137 go_version=go1.21.13 image_tag=linux-amd64-2.21.5 nodejs_version=18.20.5 version=2.21.5 webpack_version=5.88.2 yarn_version=1.22.22
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/http/server.go:370 > starting HTTPS server | bind_address=:9443
portainer  | 2025/01/20 01:00PM INF github.com/portainer/portainer/api/http/server.go:354 > starting HTTP server | bind_address=:9000
portainer  | 2025/01/20 01:05PM INF github.com/portainer/portainer/api/adminmonitor/admin_monitor.go:62 > the Portainer instance timed out for security purposes, to re-enable your Portainer instance, you will need to restart Portainer |

当控制台没有输出错误,并显示正常启动后,我们分开服务器的9000端口,浏览器输入服务器ip:9000,即可进入Portainer初始化界面,它会要求我们配置用户名密码:

完成账户密码初始化之后,我们点击local进行服务器本地容器管理

常用命令

#从compose.yaml文件中启动所定义的服务
docker compose up
#停止并删除正在运行的服务
docker compose down 
#查看容器输出日志
docker compose logs
# 查看所有服务与状态
docker compose ps

参考:堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?-腾讯云开发者社区-腾讯云

官方文档:How Compose works | Docker Docs


http://www.ppmy.cn/ops/152461.html

相关文章

图像点处理

怎么理解灰度图? RGB很明显有三个通道 我们看红色通道,因为天空中红色含量(R值)最少,因此红色通道中的天空最暗,而因为建筑红色含量(R值)最高,所以红色通道中的建筑最亮…

C#性能优化技巧:利用Lazy<T>实现集合元素的延迟加载

一、C#中的Lazy C#中的Lazy<T>是一个泛型类&#xff0c;它实现了延迟加载&#xff08;Lazy Initialization&#xff09;的功能。延迟加载是指对象的创建被推迟&#xff0c;直到第一次被使用时才进行实例化。这对于大型或资源密集型对象的性能优化非常有用&#xff0c;因…

计算机视觉中的目标检测技术

1. 引言 目标检测是计算机视觉中的重要任务&#xff0c;涉及识别图像或视频中的多个对象并定位它们的位置。与图像分类不同&#xff0c;目标检测不仅需要识别类别&#xff0c;还要在图像中绘制出对象的边界框(Bounding Box)。本文将探讨目标检测的核心技术和应用&#xff0c;并…

STM32 GPIO工作模式

GPIO工作模式 1. GPIO简介2. GPIO工作模式2.1 输入浮空2.2 输入上拉2.3 输入下拉2.4 模拟2.5 开漏输出2.6 推挽输出2.7 开漏式复用功能2.8 推挽式复用功能 1. GPIO简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚&#xff0c;STM32 芯片的 GPI…

2、ceph的安装——方式二ceph-deploy

一、ceph部署 1、更新yum源 wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo2、下载 pip yum -y install python-pip3、始终同步、关闭防火墙、selinux、三台机器做免密 yum install -y ntpdate ntpdate ntp.aliyun.com setenforce 0…

【Golang 面试题】每日 3 题(四十一)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

封装 调用第三方链接接口

function payOutCardInfo($card_id,$amount) {$url config(payOut.url).v1/cash-out/card-info;$headers [accept: */*,Content-Type: application/json];//$data [cardId > $card_id,amount > $amount,];// 将数据转换为JSON格式$jsonData json_encode($data);// 初…

C# 动态创建Label和ComboBox控件并修改Text获取Text

背景&#xff1a;在做项目的时候可能需要根据一定数量创建某些控件并修改其属性&#xff0c;本文以控件label、ConboBox控件进行动态创建。 程序运行前后的的Form动态图 代码如下&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; …