Docker Compose 容器部署

1.没有Docker Compose的“黑日子”

在前面的章节中,如果我们启动一个简单的应用,要把应用对应的容器启动起来,要把mysql容器启动起来,要把Nginx容器启动起来,要把redis容器启动起来。见证了多容器的APP是真的很恶心。总结起来要以下步骤:

  • 要从Dockerfile build image或者Dockerhub拉取image,
  • 要创建多个container
  • 要管理这些container(启动、停止、删除)

2.Docker Compose

能不能统一管理以下呢~~OK,那就需要Docker Compose了。Docker Compose是一个工具,这个工具可以通过一个yml文件定义多容器的docker应用。通过一条命令就可以根据yml文件的定义去创建或管理多个容器。
docker Compose中有三个概念:

  • services
      一个service代表一个container,这个container可以从dockerhub的image来创建,或者从本地的Dockerfile build出来的image来创建
  • networks
  • volumes
  services:
    db:
      image:  postgres:9.4
      volumes:
        - "db-data:/var/lib/postgresql/data"
      networks:
        -  back-tier

类似于docker run -d --network back-tier -v db-data:/var/lib/postgresql/data postgres:9.4
docker volume create db-data
docker network create -d bridge back-tier

3.Docker-compose

docker-compose -f docker-compose.yml up,该命令可以自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。-f可以省略,如果docker-compose.yml文件就在当前目录下。
我们先看一个docker-compose.yml文件的例子:

[root@master word-press]# cat docker-compose.yml
version: '3'

services:

  wordpress:
    image: wordpress
    ports:
      - 8080:80
    depends_on:
      - mysql
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_PASSWORD: root
    networks:
      - my-bridge

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - my-bridge

volumes:
  mysql-data:

networks:
  my-bridge:
    driver: bridge

执行docker-compose up可以看到以下内容:



使用docker-compose stop和start可以进行停止和启动。执行docker-compose down来停止以及删除container,并且还会删除network,但是这个down命令并不会删除本地的image。
docker-compose ps可以看到启动的container
docker-compose images可以看到其中的image有哪些
如果我们要进入到某个container里面该怎么办呢?
docker-compose exec mysql bash或者docker-compose exec wordpress bash

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容