如何在CentOS上安装和使用Docker Compose
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创建的所有网络和卷。这有助于在开发/测试环境中进行清理。