Docker compose 是管理多个 Docker 容器的有用工具。 它帮助我们使用单个命令启动、更新和构建一组 docker 容器。 在多容器应用的情况下,docker compose 帮助我们更轻松地管理它。
本教程可帮助您在 Ubuntu 20.04 LTS Linux 系统上安装 Docker compose。
先决条件
- 运行 Ubuntu 20.04 的系统。
- 在 Ubuntu 20.04 上预装 Docker 服务。
- 终端访问 sudo 特权帐户。
在 Ubuntu 上安装 Docker Compose
Docker compose 二进制文件在官方 Github 版本上可用。 用 curl 用于下载 docker compose 二进制文件并将其放置在 PATH 环境下以使其全局可用的命令行工具。
首先,确保你有最新的 curl 二进制安装在您的系统上。
sudo apt update
sudo apt install -y curl
现在,确认最新的 docker-compsoe 二进制版本 Github 发布 页。 在撰写本教程时,当前的稳定版本是 1.29.2
.
以下命令将下载 docker-compose 二进制版本 1.29.2
并将此文件保存在 /usr/local/bin/docker-compose
.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64" -o /usr/local/bin/docker-compose
使二进制 docker-compose 文件可执行
chmod +x /usr/local/bin/docker-compose
通过运行 followign 命令验证 docker-compose 版本。
docker-compose --version
输出:
docker-compose version 1.29.2, build 5becea4c
运行 Docker Compose 示例
在这个阶段 Docker compose 已经在你的 Ubuntu 系统上配置好了。
- 首先,创建一个目录,该目录将包含与此示例相关的所有文件。
mkdir ~/myapp && cd ~/myapp
- 现在,创建一个 html 目录。 我们将此目录映射为在 Docker 容器下运行的 Web 服务器的文档根目录
mkdir html
- 现在在 html 文件下创建一个 index.html 文件。
echo "<h2>Hello TecAdmin</h2>" > html/index.html
- 接下来,创建最重要的配置文件 docker-compose.yml。 该文件包含 docker-compose 使用的所有设置。 该文件的基础 docker-compose 设置图像、网络和容器等。
为了更好地理解,我将分部分讨论这个问题。 在文本编辑器中编辑文件:
sudo nano docker-compose.yml
将以下内容添加到文件中。
version: '3' services: web: image: "php:8.0-apache" restart: 'always' volumes: - ./html:/var/www/html ports: - '8080:80'
以上内容说明我们使用的是最新版本的docker compose version 3。
接下来,我们在服务部分定义了一个服务“web”。 这将使用预构建的“php:8.0-apache”AMI 启动一个 docker 容器。 当前文件夹中的“html”目录将挂载到容器的 /var/www/html 目录中。
将您的文件保持在编辑模式。
-
接下来在 docker compose 文件中添加一个 MySQL 数据库容器。
version: '3' services: web: image: "php:8.0-apache" restart: 'always' volumes: - ./html:/var/www/html ports: - '8080:80' depends_on: - mysql links: - mysql mysql: image: mysql:8 container_name: mysql environment: MYSQL_ROOT_PASSWORD: my_secret_password MYSQL_DATABASE: app_db MYSQL_USER: db_user MYSQL_PASSWORD: db_user_pass ports: - "6033:3306" volumes: - dbdata:/var/lib/mysql volumes: dbdata:
您可以更改 MySQL 版本和访问凭据。 我们还更新了 Web 容器配置以链接数据库。 这将允许 Web 容器直接访问数据库。
将您的文件保持在编辑模式…
- 可选但有助于添加 phpmyadmin docker 容器。 这将帮助您访问数据库及其用户。
添加 phpmyadmin 后,您的 docker-compose.yml 如下所示:
version: '3' services: web: image: "php:8.0-apache" restart: 'always' volumes: - ./html:/var/www/html ports: - '8080:80' depends_on: - mysql links: - mysql mysql: image: mysql:8 container_name: mysql environment: MYSQL_ROOT_PASSWORD: my_secret_password MYSQL_DATABASE: mydb MYSQL_USER: dbuser MYSQL_PASSWORD: dbuser_password ports: - "6033:3306" volumes: - dbdata:/var/lib/mysql phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin links: - mysql environment: PMA_HOST: mysql PMA_PORT: 3306 PMA_ARBITRARY: 1 restart: always ports: - 8081:80 volumes: dbdata:
Save 你提交和 close 它。
-
接下来,运行以下命令以拉取系统上的所有映像。
sudo docker-composer pull
-
接下来运行 build 命令来创建 docker 镜像。 对于此示例,您可以跳过此命令,因为我们仅使用预构建映像。
sudo docker-composer build
-
最后,运行 docker-compose up 命令。 使用“-d”选项取消容器以继续运行。
sudo docker-composer up -d