Docker Compose部署及基础使用详解

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中的镜像详细介绍

    下面是关于”Docker中的镜像详细介绍”相关内容的完整攻略。 镜像是什么 镜像是一个只读的文件系统,它包含了安装和运行某个程序所需要的所有内容,包括代码、依赖库、环境变量和配置文件等。使用Docker构建镜像是容器化的第一步,可以通过Dockerfile文件定义构建流程,将代码和依赖打包到一个镜像文件中。 镜像的结构 Docker镜像是由多个镜像层叠加而成…

    Docker 2023年5月16日
    00
  • redis 连接 docker容器 6379端口失败

    容器内redis-cli是可以直接连上的,但是在另一台服务器上就不能用外网ip来连了 虽然我创建redis容器时声明了映射TCP 6379。 image linux/0805 是我本地提交镜像 基于 centos7+jdk8       1.安装 yum install mongodb-org 2.安装 yum install redis 提交镜像到本地  …

    Docker 2023年4月16日
    00
  • Docker教程之使用dockerfile生成镜像

    下面我就来详细讲解“Docker教程之使用dockerfile生成镜像”的完整攻略。 1. 准备工作 安装Docker 创建一个文件夹(例如my-docker-app)并进入该文件夹 在文件夹中创建一个Dockerfile文件(文件名必须大写) 2. 编写Dockerfile 在创建好Dockerfile文件后,我们需要按照以下步骤编写Dockerfile:…

    Docker 2023年5月16日
    00
  • docker-创建容器常见选项

    1. docker run创建容器常见选项 1.1 创建容器 选项 描述 -i,-interactive 交互式 -t,-tty 分配一个伪终端 -d,-detach 运行容器到后台 -e,-env 设置环境变量 -p(小写),-publish list 发布容器端口到主机 -P(大写),-publish -all 发布容器所有EXPOSE的端口到宿主机随机…

    Docker 2023年4月16日
    00
  • Docker Compose 原理

    Docker 的优势非常明显,尤其是对于开发者来说,它提供了一种全新的软件发布机制。也就是说使用 docker 镜像作为软件产品的载体,使用 docker 容器提供独立的软件运行上下文环境,使用 docker hub 等提供镜像的集中管理,这其中最重要的是使用 Dockerfile 定义容器的内部行为和关键属性来支持软件运行。但是实际的生产环境往往需要定义数…

    Docker 2023年4月13日
    00
  • 使用Docker部署Consul集群并由Ocelot调用

    关于consul的介绍就不写了百度就行,我们直接开干。 一、部署consul集群 拉取consul的镜像 docker pull consul 然后部署consul容器 docker run –name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 c…

    2023年4月10日
    00
  • docker从安装入门到应用部署及私有仓库搭建基础命令

    Docker入门 Docker是一款优秀的应用容器引擎,可以方便的实现应用的打包、传输和部署,让应用开发者和系统管理员轻松管理和部署应用。下面我们来一步步了解如何安装、使用docker。 Docker安装 Docker的安装非常简单快捷。具体安装步骤根据不同操作系统略有差异,这里以Ubuntu为例。 # 更新apt源 sudo apt-get update …

    Docker 2023年5月16日
    00
  • docker搭建Elasticsearch、Kibana、Logstash 同步mysql数据到ES

    一、前言 在数据量大的企业级实践中,Elasticsearch显得非常常见,特别是数据表超过千万级后,无论怎么优化,还是有点力不从心!使用中,最首先的问题就是怎么把千万级数据同步到Elasticsearch中,在一些开源框架中知道了,有专门进行同步的!那就是Logstash 。在思考,同步完怎么查看呢,这时Kibana映入眼帘,可视化的界面,让使用更加的得心…

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