自学内容网 自学内容网

Docker Compose创建镜像服务

什么是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:latest
    container_name: portainer
    restart: always
    ports:
      - "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


原文地址:https://blog.csdn.net/jilo88/article/details/145289442

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!