如何在CentOS上安装和使用Docker Compose

时间:2020-03-05 15:25:20  来源:igfitidea点击:

Docker Compose是一个简单的Python程序,可帮助在服务器上轻松部署多个Docker容器。

它使用一个简单的YAML文件进行服务描述。

我们可以只使用docker-compose up -d一次部署多个服务。而不是像之前那样需要很长的docker run . . .命令。

在本教程中,将介绍如何在CentOS服务器上安装Docker Compose。
我还将向我们展示一个使用Docker Compose部署具有特定配置的NGINX服务器的快速示例。

在CentOS上安装docker-compose

我们需要预先安装Docker。
在安装Docker Compose之前,请确保在CentOS系统上安装Docker。

docker-compose既没有打包在CentOS的官方存储库中,也没有打包在docker的rpm存储库中。

有两种方法可以在Linux上安装Docker Compose:

  • 下载Docker Compose Linux安装程序文件并手动设置
  • 使用PIP轻松安装Docker Compose

就个人而言,我更喜欢使用PIP安装Docker Compose。
由于Docker Compose本质上是Python应用程序,因此使用PIP进行安装是有意义的。

安装pip3

使用以下命令安装pip3:

sudo dnf install python3-pip

使用pip3安装docker-compose

使用pip安装docker-compose

pip3 install --user docker-compose

更新路径

pip将docker-compose安装在~/.local/bin目录中。
我们必须将其添加到PATH环境变量中,以便可以在任何地方运行它:

echo 'PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc

如果我们使用的是zsh,请将.bashrc更改为.zshrc

完成后,使用源命令source~/.bashrc或者重新打开终端(如果是服务器,请注销并重新登录)。

使用以下命令确认已安装docker-compose:

Hyman@theitroad:~$docker-compose --version
docker-compose version 1.26.2, build unknown

恭喜你!现在,我们已在CentOS 8服务器上安装了docker-compose。

想测试一下吗?
遵循此简单教程并学习如何使用Docker Compose。

使用docker-compose部署示例Nginx服务器

Nginx是最流行的Web服务器之一,可以通过docker轻松部署。

让我们比较一下撰写方式和非撰写方式

在没有Docker Compose的情况下部署Nginx

我们可以使用run命令轻松地部署Nginx服务器,如下所示:

docker run --name server --network net -v html:/usr/share/nginx/html -v $PWD/custom-config.conf:/etc/nginx/nginx.conf -p 80:80 --restart on-failure -d nginx:latest

其中我们已经使用外部网络“ net”部署了具有容器名称“ server”的nginx服务器,并使用自定义配置文件安装了名为“ html”的卷,并侦听了主机上的端口80,故障自动重启。

让我们看一下这里的问题:

我们必须事先创建网络和卷

Docker不会自动创建网络和卷。
我们必须事先创建它们。

每次写的选项太多

有太多可供选择的选项。
如果它是一个更复杂的容器,例如数据库容器,反向代理容器或者nextcloud容器,那么这些选项将不断增加。

开发环境

如果我们正在测试构建并不想在停止容器后保留卷,该怎么办?
之后,我们必须手动删除该卷和网络。

使用Docker Compose部署Nginx

首先,我们必须创建一个撰写文件。

创建一个名为“ nginx-compose”的目录,并使用cd进入该目录:

mkdir nginx-compose && cd nginx-compose

创建一个名为“ docker-compose.yml”的文件并添加以下行

version: "3.3"
services:
    server:
        image : "nginx:latest"
        container_name: "server"
        volumes:
            - "html:/usr/share/nginx/html"
            - "./custom-config.conf:/etc/nginx/nginx.conf"
        networks:
            - "net"
        ports:
            - "80:80"
        restart: "on-failure"
volumes:
    html:
networks:
    net:

这个撰写文件描述了一个名为server的服务,该服务将以与非编写方式完全相同的配置来部署nginx服务器。
使用以下方法部署它:

docker-compose up -d

docker-compose将在当前目录中查找名为“ docker-compose.yml”的文件,对其进行解析并部署其中定义的服务。

现在让我们用compose方法来解决非组合方法的问题:

  • 无需事先创建网络和卷,docker-compose会为我们完成。我们可以通过在每个卷/网络中将external设置为true来添加外部卷。
  • 写入.yaml文件后,就无需再编写大量命令了。我们可以将该文件复制到安装了最新版本的docker-compose的任何其他服务器上,并且可以轻松按预期运行。
  • 我们可以使用docker-compose down -v命令来停止和移除不仅是容器,而且是docker-compose创建的所有网络和卷。这有助于在开发/测试环境中进行清理。