前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker入门(八):三剑客之Docker Compose安装卸载

Docker入门(八):三剑客之Docker Compose安装卸载

原创
作者头像
传说之下的花儿
发布2023-10-06 10:23:32
5230
发布2023-10-06 10:23:32
举报

十、💖Docker三剑客

1. ❤️Docker Compose项目

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分 布式应用。

本章将介绍 Compose 项目情况以及安装和使用。

1.1 简介

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multicontainer Docker applications)」,其前身是开源项目 Fig。

通过第一部分中的介绍,我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。

例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件 (YAML 格式)来定义一组相关联的应用容器为一个项目(project)

Compose中有两个重要的概念:

  1. 服务 ( service ):一个应用容器,实际上可以包括若干运行相同镜像的容器实例。(没理解)
  2. 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

1.2 安装与卸载

Compose支持 Linux、macOS、Windows 10 三大平台。

Compose可以通过 Python 的包管理工具 pip进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。

前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。

Docker for MacDocker for Windows 自带 docker-compose 二进制文件,安装 Docker 之 后可以直接使用。

代码语言:javascript
复制
 $ docker-compose --version
 docker-compose version 1.17.1, build 6d101fb

Linux 系统请使用以下介绍的方法安装。

1.2.1 方法一:下载二进制包
  1. 下载二进制包: $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  2. 将可执行权限应用于二进制文件: $ sudo chmod +x /usr/local/bin/docker-compose
  3. 测试: [root@VM-24-17-centos bin]# docker-compose --version docker-compose version 1.17.1, build 6d101fb
1.2.2 方法二:容器运行

Compose 既然是一个 Python 应用,自然也可以直接用容器来执行它。

代码语言:javascript
复制
 $ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose-container
 ​
 $ chmod +x /usr/local/bin/docker-compose-container
 $ docker-compose-container --version
 Unable to find image 'docker/compose:1.8.0' locally
 1.8.0: Pulling from docker/compose
 e110a4a17941: Pull complete 
 92120570534d: Pull complete 
 47d26c525b40: Pull complete 
 40a1d6f501ac: Pull complete 
 643031e197d8: Pull complete 
 0841ec069338: Pull complete 
 Digest: sha256:9bb1d2f141b4511b52dac37e5ea0aecadaf7786bc47184c133c566a4f678061d
 Status: Downloaded newer image for docker/compose:1.8.0
 docker-compose version 1.8.0, build f3628c7
 ​
 $ docker image ls
 REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
 ...
 docker/compose        1.8.0     89188432ef03   7 years ago     59.1MB
 ...

知识普及uname命令:用于显示操作系统信息,例如内核版本、主机名、处理器类型等。

  • -n 或 --nodename:显示主机名。
  • -m 或 --machine:显示处理器类型。

查看下载的 run.sh 脚本内容,如下:

代码语言:javascript
复制
 #!/bin/bash
 #
 # Run docker-compose in a container
 #
 # This script will attempt to mirror the host paths by using volumes for the
 # following paths:
 #   * $(pwd)
 #   * $(dirname $COMPOSE_FILE) if it's set
 #   * $HOME if it's set
 #
 # You can add additional volumes (or any docker run options) using
 # the $COMPOSE_OPTIONS environment variable.
 #
 ​
 ​
 set -e
 ​
 VERSION="1.8.0"
 IMAGE="docker/compose:$VERSION"
 ​
 ​
 # Setup options for connecting to docker host
 if [ -z "$DOCKER_HOST" ]; then
     DOCKER_HOST="/var/run/docker.sock"
 fi
 if [ -S "$DOCKER_HOST" ]; then
     DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
 else
     DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
 fi
 ​
 ​
 # Setup volume mounts for compose config and context
 if [ "$(pwd)" != '/' ]; then
     VOLUMES="-v $(pwd):$(pwd)"
 fi
 if [ -n "$COMPOSE_FILE" ]; then
     compose_dir=$(dirname $COMPOSE_FILE)
 fi
 # TODO: also check --file argument
 if [ -n "$compose_dir" ]; then
     VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
 fi
 if [ -n "$HOME" ]; then
     VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config
 fi
 ​
 # Only allocate tty if we detect one
 if [ -t 1 ]; then
     DOCKER_RUN_OPTIONS="-t"
 fi
 if [ -t 0 ]; then
     DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
 fi
 ​
 exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"

可以看到,它其实是下载了 docker/compose 镜像并运行。

1.2.3 卸载

如果是二进制包方式安装的,删除二进制文件即可。

代码语言:javascript
复制
 $ sudo rm /usr/local/bin/docker-compose

如果用的容器,直接删除docker-compose-container文件,再删除docker/compose镜像即可:

代码语言:javascript
复制
 $ sudo rm /usr/local/bin/docker-compose-compose
 $ docker image rm docker/compose:1.8.0

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 十、💖Docker三剑客
    • 1. ❤️Docker Compose项目
      • 1.1 简介
      • 1.2 安装与卸载
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档