docker-compose入门指南

什么是 docker-compose

通俗的说,docker-compose 正如其名,是将你的多个 docker 容器服务整合起来的命令行工具。举个例子,假设你有一个 MySQL 实例和一个 Node.js 实例分别部署在两个容器中,仅需一个docker-compose.yml文件,docker-compose 就能够为你完成从打包到运行的全部步骤,并若是你还在苦恼手动执行各类docker run [] 命令,这份指南可能可以帮上你。mysql

安装

若是你是在本地开发环境中使用 docker-compose,你不须要安装任何的依赖项,Docker for Windows 和 Docker for Mac 都已经内置了 docker-compose 的包git

在 Linux based 服务器上安装:github

  • 在 terminal 中运行 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m`-o /usr/local/bin/docker-compose 下载 docker-compose 的安装脚本
  • 为脚本添加执行权限sudo chmod +x /usr/local/bin/docker-compose
  • 执行脚本sh /usr/local/bin/docker-compose

容器编排

docker-compose 使用目录下的docker-compose.yml 做为项目的配置文件, 以上述咱们举的 MySQL 和 Node.js 应用的例子 docker-compose.yml 文件应该具备相似如下的结构:web

你能够在Github上克隆和运行下文中的示例sql

services:
  mysql:
    image: mysql:latest
    ports:
      - '3306:3306'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: '123456'

  webapp:
    build: .
    container_name: webapp
    restart: always
    depends_on:
      - 'mysql'
    environment:
      NODE_ENV: 'production'
    ports:
      - '80:8080'
复制代码

看不懂是很正常的,下面咱们来一条一条详细剖析每一个配置项是什么意思docker

  • services 表示该集合下包含的全部服务,在这个例子中咱们有 mysql 和 webapp 两个服务数据库

  • image 表示从官方维护的 mysql 镜像构建咱们的容器express

  • port 表示将 docker 宿主机的 3306 端口映射 docker 容器的 3306 端口上,这样咱们就能在宿主上经过 localhost:3306 链接到咱们的 mysql 数据库django

  • webapp服务器

    • build: 表示 docker 从哪一个文件夹开始构建镜像
    • container_name: 容器名字
    • restart: 表示 Dockerfile 中的 CMD 命令返回任何非 0 的状态时都将重启容器
    • depends_on: 容器的依赖。在这里,webapp 容器会保证在 mysql 容器以后启动。
    • environment: 须要注入的 unix 环境变量,供容器使用。

注意:services 下的全部服务会共享同一个 docker network,这意味着你能够再 webapp 容器中经过 mysql:3306 访问到 mysql 服务,在 mysql 容器中经过 webapp:8080 访问到咱们的 express 服务端, 更加详细的 networks 配置请查阅 Networking in Compose

depends_on 仅仅保证容器的执行顺序,而不保证你的应用已经在可用的状态(无论可用的状态对于你的应用意味着什么)。docker 这样设计是通过了周密考虑的:为了保证应用的健壮性,你应该自行定义在容器之间服务链接错误时候的重试/重启机制。

  1. 接下来,你仅须要在项目目录下运行docker-compose up 便可看到 docker 开始构建镜像并启动服务
  2. 若是须要之后台守护进程模式启动 使用docker-compose up -d
  3. docker-compose down来中止运行中的容器
  4. docker-compose build从新构建容器

运行成功后,访问http://localhost 能够看到 express 服务器的 hello world 示例,http://localhost/mysql 能够检查 mysql 链接状态

docker 官网提供的其余示例:

完整的配置项文档请移步docker 官网文档

原文连接

相关文章
相关标签/搜索