Docker容器化部署实践Docker Compose

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker容器化部署实践Docker Compose

上期我们讲了在Docker 容器化部署实践--入门讲了Docker作为云计算的优点以及它的安装常见命令。今天给大家介绍一个简单的编排工具docker compose。

在讲之前我继续沿用昨天的提到一个命令:


docker run -d -p 5000:5000 --name echo ubuntu:16.04 /bin/bash -c "while true; do echo 1; sleep 1; done"

-d 参数后台运行

-p 端口号映射

--name 自定义容器名字,容器命名是唯一的,若要使用需要删除之前的。


启动好了之后我们可以通过docker logs -f echo查看容器内数字1的打印。

我们从上面可以看到整个操作起来相对比较繁琐,既要输入各个参数,又有版本号,标签等等。如果我们只是一个容器还好用个shell定义一个快捷方式就行。

但是我们往往有多个容器,多个容器相互关联。比如一个web项目,我们可能有db容器,缓存容器,离线任务的容器,日志容器等等,这个时候如果我们还用手动输入进行控制,不仅非常麻烦还容易出错。


这时通过shell自定义命令就显得吃力一点了,并且不能做到多服务启动重启等等。

所以Docker官方出了一款编排工具,叫Compose,它通过一个单独docker-compose.yml模板文件来定义一组相关的容器,简单的理解就是通过这种方式把对应的各个容器相互组装起来,进行启动,停止,删除。


Compose这是由Python语言编写,通过Docker提供的API进行容器的管理,使用操作也非常方便。

下面来看一个docker-compose.yml 的文件形式:


version: "3"  # 注意版本号
services:  # 一个应用的容器,可以包括多个相同镜像容器实例
  dev:
    image: hub.yourdomain.com/test:1.0 # 镜像地址
    command: python app.py  # 容器执行命令
    container_name: test  # 容器名
    restart: always  
    volumes:
      - ./docker:/data  # 挂载地址
    ports:
      - "9527:9527" #端口
    environment:
      - PYTHONPATH=/data
      - XXX_API_SETTINGS=XXX.config.dev
    network_mode: bridge
    extra_hosts: # 配置额外的host名称
      - "test.yourdomain.com:127.0.0.1"
    external_links: # 链接到外部容器
      - redis:redis 
      - mysql:mysql


通过上面的简单配置,我们就能把多个容器链接处理好了:

通过docker-compose up dev就能把整个服务启动起来了并且把端口号已经环境变量地址等等都设置好了,非常方便。


下面我们来说一下docker-compose 安装,docker-compose 安装方式非常简单,一条命令就完事儿。


sudo pip install -U docker-compose

安装好了如果你Linux或者Mac终端是使用的ohmyzsh的话,可以在zshrc里面添加 plugins +=(docker-compose)

image.png

图片


给大家贴一下我自己常使用的自动补全命令行

plugins=(git ruby autojump osx tmux zsh-syntax-highlighting brew-cask brew colored-man rsync sudo node-docs history-substring-search docker docker-compose fabric redis-cli cp zsh-autosuggestions )

我简单介绍一下常使用的几个命令(和docker没有太多差别),更多的请参考 docker-compose -h


docker-compose logs dev  # dev 是定义service服务

docker-compose up -d dev # 启动服务,会进行自动拉取镜像,进行关联服务

docker-compose restart dev # 重启服务

docker-compose rm dev # 删除服务


通过Compose我们可以快速编写属于自己docker项目的启动配置文件,方便我们快速启动,重启服务,没有使用的同学可以用起来了,今天内容就先到这儿了。

容器化部署实践,我打算从基础操作到实战应用以一个系列进行分享,今天是第二篇docker-compose编排,后期我将持续分享更多相关内容,从容器化入门使用到部署实践编排技术,欢迎大家持续进行关注。

相关文章
|
19小时前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
19小时前
|
缓存 关系型数据库 数据库
【Docker 专栏】Docker 与容器化数据库的集成与优化
【5月更文挑战第9天】本文探讨了Docker与容器化数据库集成的优势,如快速部署、环境一致性、资源隔离和可扩展性,并列举了常见容器化数据库(如MySQL、PostgreSQL和MongoDB)。讨论了集成方法、注意事项、优化策略,包括资源调整、缓存优化和监控告警。此外,强调了数据备份、恢复测试及性能评估的重要性。未来,随着技术发展,二者的集成将更紧密,为数据管理带来更多可能性。掌握此技术将应对数字化时代的机遇与挑战。
【Docker 专栏】Docker 与容器化数据库的集成与优化
|
19小时前
|
机器学习/深度学习 监控 Kubernetes
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
【5月更文挑战第9天】本文探讨了Docker容器服务的自动扩展与缩容原理及实践,强调其在动态业务环境中的重要性。通过选择监控指标(如CPU使用率)、设定触发条件和制定扩展策略,实现资源的动态调整。方法包括云平台集成和使用Kubernetes等框架。实践中,电商平台和实时数据处理系统受益于此技术。注意点涉及监控数据准确性、扩展速度和资源分配。未来,智能算法将提升扩展缩容的效率和准确性,成为关键技术支持。
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
|
20小时前
|
Java 数据库连接 Docker
【Docker 专栏】Docker 容器内环境变量的管理与使用
【5月更文挑战第9天】本文介绍了Docker容器中环境变量的管理与使用,环境变量用于传递配置信息和设置应用运行环境。设置方法包括在Dockerfile中使用`ENV`指令或在启动容器时通过`-e`参数设定。应用可直接访问环境变量或在脚本中使用。环境变量作用包括传递配置、设置运行环境和动态调整应用行为。使用时注意变量名称和值的合法性、保密性和覆盖问题。理解并熟练运用环境变量能提升Docker技术的使用效率和软件部署质量。
【Docker 专栏】Docker 容器内环境变量的管理与使用
|
1天前
|
前端开发 应用服务中间件 nginx
前后端分离项目Docker部署指南(下)
前后端分离项目Docker部署指南(下)
|
1天前
|
NoSQL 关系型数据库 网络安全
前后端分离项目Docker部署指南(上)
前后端分离项目Docker部署指南(上)
|
1天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
1天前
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素
|
1天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
10 0
|
1天前
|
算法 计算机视觉 Docker
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境

相关产品

  • 容器服务Kubernetes版