如何在 Ubuntu 20.04 上安装 Docker Compose

[ad_1]

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 系统上配置好了。

  1. 首先,创建一个目录,该目录将包含与此示例相关的所有文件。
    mkdir ~/myapp && cd ~/myapp
    
  2. 现在,创建一个 html 目录。 我们将此目录映射为在 Docker 容器下运行的 Web 服务器的文档根目录
    mkdir html
    
  3. 现在在 html 文件下创建一个 index.html 文件。
    echo "<h2>Hello TecAdmin</h2>" > html/index.html 
    
  4. 接下来,创建最重要的配置文件 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 目录中。

    将您的文件保持在编辑模式。

  5. 接下来在 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 容器直接访问数据库。

    将您的文件保持在编辑模式…

  6. 可选但有助于添加 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 它。

  7. 接下来,运行以下命令以拉取系统上的所有映像。

    sudo docker-composer pull 
    
  8. 接下来运行 build 命令来创建 docker 镜像。 对于此示例,您可以跳过此命令,因为我们仅使用预构建映像。

    sudo docker-composer build
    
  9. 最后,运行 docker-compose up 命令。 使用“-d”选项取消容器以继续运行。

    sudo docker-composer up -d 
    

  10. web服务器容器监听8080端口,我们已经绑定了容器的80端口。在8080端口访问你的主机ip地址。你会看到在html目录下创建的index.html。

    要进行更改,只需更新 html 目录内容并刷新页面。

结论

本教程帮助您在 Ubuntu 系统上安装和使用 docker-compose。 以上指令可用于Ubuntu 16.04 LTS及以上系统。

[ad_2]

Related Posts