Docker Compose部署及基础使用详解

yizhihongxing

Docker Compose部署及基础使用详解

Docker Compose是一个用于定义和运行多个Docker容器的工具,可以通过一个简单的YAML文件来配置多个容器之间的关系,从而实现容器的编排。这篇攻略将介绍Docker Compose的使用方法和示例,帮助大家更好地理解和运用Docker Compose。

安装Docker Compose

要使用Docker Compose,首先需要在本地机器上安装Docker Compose。下面是在Linux操作系统上的安装步骤:

  1. 下载Docker Compose二进制文件

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

  1. 赋予二进制文件可执行权限

$ sudo chmod +x /usr/local/bin/docker-compose

  1. 验证是否安装成功

$ docker-compose --version

编写Docker Compose配置文件

Docker Compose的核心是YAML文件,可以使用任何文本编辑器来创建这个文件。下面是一个最简单的Docker Compose配置文件示例,它定义了一个Nginx容器:

version: '3'
services:
   web:
     image: nginx:latest
     ports:
       - "8080:80"

这个配置文件的YAML格式包含了version和services两个关键字。其中,version指定Docker Compose的版本,services则表示定义的多个服务。在这个配置文件中,我们定义了一个名为web的服务,使用了nginx:latest镜像,并将主机的端口8080映射到容器的端口80。

运行Docker Compose

在编写好Docker Compose配置文件之后,可以使用docker-compose up命令来启动容器。在上面的示例中,我们可以在包含Docker Compose配置文件的目录下运行以下命令:

$ docker-compose up

执行该命令后,Docker Compose会通过Docker Hub拉取nginx:latest镜像,并将其容器化。此时就可以通过http://localhost:8080来访问Nginx服务了。

示例1:使用Docker Compose部署WordPress

除了上面的示例外,Docker Compose还支持更为复杂的场景。下面是一个为WordPress部署的Docker Compose示例,其中包含了MySQL、WordPress和Nginx三个服务:

version: '3.3'

services:

  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8080:80"
    restart: always
    volumes:
      - wp_data:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress

  nginx:
    depends_on:
      - wordpress
    image: nginx:latest
    ports:
      - "80:80"
    restart: always
    volumes:
      - ./config/nginx.conf:/etc/nginx/nginx.conf:ro
      - wp_data:/var/www/html
volumes:
    db_data:
    wp_data:

在这个示例中,我们通过Docker Compose定义了三个服务:MySQL、WordPress和Nginx。其中,MySQL服务使用mysql:5.7镜像,定义了数据卷并指定了环境变量;WordPress服务使用wordpress:latest镜像,定义了端口和数据卷,并通过环境变量来将其连接到MySQL服务;Nginx服务使用nginx:latest镜像,定义了端口和数据卷,并将WordPress服务作为其后端。

要启动这个Docker Compose示例,只需要进入该示例配置文件所在目录,并执行以下命令:

$ docker-compose up -d

执行该命令后,Docker Compose会依次启动MySQL、WordPress和Nginx服务,并将其容器化。此时就可以通过http://localhost访问WordPress了。

示例2:使用Docker Compose部署Django应用

除了WordPress之外,Docker Compose还可以用于部署Django应用。下面是一个Django应用的Docker Compose示例,其中包含了Web、Nginx、PostgreSQL和Redis四个服务:

version: '3.7'

services:
  db:
    image: postgres:13.2-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_DB=app_db
      - POSTGRES_USER=app_user
      - POSTGRES_PASSWORD=app_password
    ports:
      - "5432:5432"

  redis:
    image: redis:latest
    command: redis-server
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
      - redis

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./config/nginx.conf:/etc/nginx/nginx.conf:ro
      - static_data:/static/
      - media_data:/media/
    depends_on:
      - web

volumes:
  postgres_data:
  redis_data:
  static_data:
  media_data:

在这个示例中,我们通过Docker Compose定义了四个服务:PostgreSQL、Redis、Web和Nginx。其中,PostgreSQL服务使用postgres:13.2-alpine镜像,定义了数据卷和环境变量;Redis服务使用redis:latest镜像,定义了数据卷和端口;Web服务使用Dockerfile构建镜像,定义了数据卷和端口,并通过依赖关系和Redis服务连接到PostgreSQL服务;Nginx服务使用nginx:latest镜像,定义了端口和数据卷,并通过依赖关系和Web服务连接。

要启动这个Docker Compose示例,只需要进入该示例配置文件所在目录,并执行以下命令:

$ docker-compose up -d

执行该命令后,Docker Compose会依次启动PostgreSQL、Redis、Web和Nginx服务,并将其容器化。此时就可以通过http://localhost访问Django应用了。

结语

本文介绍了如何使用Docker Compose来定义和运行多个Docker容器。通过示例的介绍,读者可以更好地理解Docker Compose的使用方法和语法规则,从而优化容器编排的过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker Compose部署及基础使用详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Docker部署web项目的实现

    下面我会为您详细讲解“Docker部署web项目的实现”的完整攻略。 确定需要部署的web项目 首先,我们需要确定需要部署的web项目,并梳理出该项目的开发框架、依赖库、数据库等构成要素,以便后续的部署。 编写dockerfile 接下来,我们需要编写dockerfile文件,dockerfile文件是定义Docker镜像的配置文件,所以必须完整地列出每个步…

    Docker 2023年5月16日
    00
  • 使用Docker安装Centos,并通过SSH连接到容器

    运行环境:Windows11(有WSL2),Docker Desktop(使用WSL2 引擎 Use the WSL2 based Engine) 从Docker Hub获取centos相关的镜像 选择Offical image的镜像 从Tags中找到合适镜像,并复制命令,在cmd中运行命令 然后就可以在Docker Desktop软件中看到此镜像 使用此镜…

    Docker 2023年4月11日
    00
  • Docker安装方法与Docker四种网络模式详解

    关于Docker的安装,可以根据不同的操作系统选择相应的安装方法。下面分别介绍Windows、MacOS和Ubuntu下的Docker安装方法。 Windows下Docker的安装 在Windows下安装Docker比较简单,只需要下载Docker桌面版并运行安装程序即可。可以在Docker官网下载。 MacOS下Docker的安装 在MacOS下也是直接下…

    Docker 2023年5月16日
    00
  • 对于Docker使用的一些安全配置建议

    非常好,下面是有关Docker使用的一些安全配置建议的完整攻略,包含以下两个示例说明: 1. 检查Docker服务配置 首先,我们应该检查我们的Docker服务配置。检查Docker服务是否提供了默认的连接端口。默认情况下,Docker服务使用TCP 2375端口和UDP 2376端口。这两个端口都是开放的,默认情况下不需要认证,因此可能存在被攻击的风险。 …

    Docker 2023年5月16日
    00
  • Linux下利用docker搭建elasticsearch(单节点)

    #elasticsearch 6.x和7.x版本有很多不一样需要确认 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.2 2. 启动容器 docker run -d –name es -p 9200:9200 -p 9300:9300 -e “discovery.type=sing…

    Docker 2023年4月11日
    00
  • centos 下docker 安装方法

    下面我将详细讲解CentOS下Docker安装方法的完整攻略,包含两条示例说明。 安装 Docker 1. 卸载旧版本 Docker 首先,如果您的系统中已经安装了旧版本的 Docker,请先卸载旧版本。 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common…

    Docker 2023年5月16日
    00
  • docker 启动失败

    docker 启动服务失败 场景 在Ubuntu中,将docker切换阿里镜像后,运行如下两条命令:  sudo systemctl daemon-reload sudo systemctl restart docker 在重启docker服务这,报错信息如下:  Job for docker.service failed because the contr…

    Docker 2023年4月11日
    00
  • Docker 存储驱动详细介绍

    Docker是一种轻量级容器化技术。Docker在容器运行时会创建一个可写的容器层,也叫容器存储层。Docker存储驱动是指Docker使用哪种技术来管理镜像和存储容器数据。不同的存储驱动采用不同的技术实现Docker镜像和容器的存储管理。下面我们详细介绍一下Docker存储驱动的几种类型。 Device Mapper存储驱动 Device Mapper存储…

    Docker 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部