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

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

原创
作者头像
传说之下的花儿
发布于 2023-10-06 02:23:32
发布于 2023-10-06 02:23:32
70200
代码可运行
举报
运行总次数:0
代码可运行

十、💖Docker三剑客

1. ❤️Docker Compose项目

Docker ComposeDocker 官方编排(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
代码运行次数:0
运行
AI代码解释
复制
 $ 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
代码运行次数:0
运行
AI代码解释
复制
 $ 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
代码运行次数:0
运行
AI代码解释
复制
 #!/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
代码运行次数:0
运行
AI代码解释
复制
 $ sudo rm /usr/local/bin/docker-compose

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $ sudo rm /usr/local/bin/docker-compose-compose
 $ docker image rm docker/compose:1.8.0

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
wordpress面包屑导航简单实现
  前面我们学了一行代码搞定WordPress面包屑导航breadcrumb,现在wordpress文档中有一个简单实现的方法,适用于page页面,有二级分类的情况(Simple breadcrumb trail for pages, two levels deep.),随ytkah一起看看代码
ytkah
2019/08/06
7890
WordPress文章归档页面分组和分页
WordPress 归档页面是一个网站的历史内容存档,它允许用户浏览网站的过去内容。它的存在有以下几个意义:
楚客追梦
2024/08/07
3430
自定义wordpress侧边栏小工具
作者:matrix 被围观: 1,726 次 发布时间:2014-01-25 分类:Wordpress | 4 条评论 »
HHTjim 部落格
2022/09/26
3230
自定义wordpress侧边栏小工具
wordpress代码实现相关文章的几种方法
相关文章分类方法主要有根据文章标签以及文章所属分类来进行区分,以下代码分别使用wordpress自带的query_posts()函数以及直接读取数据库来获取文章的相关文章。另附上获取文章作者的其他文章方法。
子润先生
2021/06/24
5070
WordPress主题下funtions.php的一段“恶意”代码
不多说了,相信有很多WordPresser都知道这段在WordPress主题下fountions.php的“恶意”代码,之所以为“恶意”加个双引号是想说:其实也不算太“恶意”,对你的伤害只是两点:1、感染wp-content\themes\下所有主题的fountions.php文件;2、以当前被感染博客的主页URL为标题和内容,向 livethemas@gmail.com发送邮件。已经知道的就不用往下看啦,还不知道的快去你的主题fountions.php检查有木有,有的话赶快删除之。话说这段恶意代码还真够长
Jeff
2018/01/19
1.2K0
分享WordPress各种标签大全集合 以及如何调用
wordpress程序日渐成熟,开发者越来越多,各种模版层出不穷,但是想要做一个好的wordpress模版,前提不只是要掌握HTML5前端技术,还必须了解wordpress的各种标签如何调用才可以。今天全百科网就把整理的WordPress各种标签以及是如何调用分享给大家。
于飞云计算
2019/07/22
3.3K0
分享WordPress各种标签大全集合 以及如何调用
【Wordpress】ajax 实现站内搜索
最近想给自己的博客实现一个 站内搜索 功能,期望整个过程异步实现。这样用户体验度更好。
redszhao
2021/08/09
1.4K0
【Wordpress】ajax 实现站内搜索
wordpress中提取文章内第一张图片作为缩略图
作者:matrix 被围观: 1,059 次 发布时间:2013-09-04 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
4640
wordpress中提取文章内第一张图片作为缩略图
wordpress常用函数-随机文章获取和相关文章获取
1、wordpress随机获取文章10篇文章,轻松实现wordpress文章的随机调用;
wordpress建站吧
2019/12/10
9460
Wordpress中文章的特色图像Featured Image究竟存在哪里?
最近项目需要,分析了一下Wordpress的特色图像 Feature Image的上传、保存方式,这一分析觉得Wordpress的数据结构设计还真是有想法。
大江小浪
2019/02/22
1.7K0
Wordpress中文章的特色图像Featured Image究竟存在哪里?
怎样控制wordpress博客首页博文显示内容字数!
爱优博客是用wordpress程序做的,但是默认的wordpress首页博客文章的内容显示很,整个页面显示不了几篇文章,有时写的文章全部都显示在了首页了。
爱游博客
2019/08/07
1.2K0
SEO养博客神器:同步文章(或摘要)到新浪博客的WordPress插件
了解 SEO 的站长都会另外用心做几个博客,起到 SEO 辅助作用。通常说的养博客主要是养 BSP 博客。比如新浪博客,网易博客,百度空间,网易博客,新浪博客,搜狐博客,和讯博客,阿里巴巴博客,博客大巴,天涯博客,豆瓣博客等等。 至于具体做法,自行搜索吧。大致类似于外链推广,引蜘蛛,引流量的做法。我一直感觉精力有限,这样养博客实在是太累了! 一、养博神器 下面就介绍一款懒人养博客的神器:WP2Sinablog。 插件的功能很简单,就是在你发布文章的同时, 会推送一份到新浪博客,无需过多干预就能达到简单的养博
张戈
2018/03/26
1.3K0
SEO养博客神器:同步文章(或摘要)到新浪博客的WordPress插件
wordpress调用文章摘要,若无摘要则自动截取文章内容字数做为摘要
以下是调用指定分类文章列表的一个方法,作者如果有填写文章摘要则直接调用摘要;如果文章摘要忘记写了则自动截取文章内容字数做为摘要。这个方法也适用于调用description标签
ytkah
2019/09/25
1.4K0
WordPress巧用面包屑导航,SEO优化。
什么是网站面包屑导航?面包屑导航意在告知用户所处的当前网页的位置,方便用户可以通过该导航快速返回上一级网页。 面包屑导航一般都在导航的下面,形式一般为 首页 > 一级目录名称 > 二级目录名称 > 目前位置,尽量要把面包屑导航的层次控制在四层以内,这样也有利与搜索引擎蜘蛛一层层往下爬,到了四层以下就很难爬到了。
Kit
2021/08/02
9460
WordPress巧用面包屑导航,SEO优化。
禁用wordpress5.2自动裁剪图片功能
如果你用的是wordpress5.2或以上的版本,系统还会根据你上传的图片裁剪成 scaled 后缀的文件,大小为 2560。 还有其他大小如 2048,1536,768..... 严重浪费磁盘空间不说,还占用性能。
全面屏壁纸
2022/03/01
4330
禁用wordpress5.2自动裁剪图片功能
制作WordPress“带Gravatar头像评论”小工具(集成主题中、含选项)
最近在进一步折腾WordPress 主题的开发,在侧边栏小工具那里想做一个可独立于主题的、类似插件的带头像评论小工具。通过WordPress 官方文档与一些资料大概了解了小工具制作的一些知识,但对于我等PHP 菜鸟,完全自己开发是不可能的;于是在网络上找到了一段代码,分享并备忘一下。 关于WordPress 中小工具的开发,除了WordPress官方文档外,有一篇“阿叔工作室”的文章也不错,点击查看。这里不多说了。 下面的代码得到的“带Gravatar头像评论”小工具可以集成到主题中,小工具后台拥有相关选项
Jeff
2018/01/19
8830
制作WordPress“带Gravatar头像评论”小工具(集成主题中、含选项)
WordPress 插件:“即将推出” Widget
出于维护博客更新频率,或精雕细琢文章时督促自己及时完成,我们会在 WordPress 中把该篇文章设为“定时发布”(Schedule)。如果能在网站显示出这些预定发布的文章,应该会吸引读者继续关注你的博客吧?
Denis
2023/04/15
2610
WordPress发布文章自动同步到新浪微博(带特色图片)
WordPress 发博客后自动同步到新浪微博,这是我从无主题博客看到的方法,一直沿用至今。感觉对博客宣传和提升“逼格”都有显著的作用: 一、老版代码 先来看一下无主题博客分享的代码: functio
张戈
2018/03/23
1.8K0
WordPress发布文章自动同步到新浪微博(带特色图片)
wordpress调用函数大全
WordPress Header头部 PHP代码 (注: 也就是位于<head>和</head>之间的PHP代码)
纯情
2023/04/26
6620
WordPress丨常见函数及拓展模板函数大全
wordpress模板是由PHP语句组成,很多不懂代码的站长都被PHP复杂的代码难倒,难以自己开发个性化的模板。其实想开发一个wordpress模板并不是太难,大家只要了解一些wordpress中的常用函数,即可按照自己的需要进行内容调用了。更高端一点的类似于一些PHP语句的判断等等,这就需要大家自己去学习提高了。本篇文章主要讲解wordpress开发模板中经常需要用到的一些函数。
V站CEO-西顾
2018/06/08
1.9K0
推荐阅读
相关推荐
wordpress面包屑导航简单实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档