更牛B文章:https://blog.csdn.net/pushiqiang/article/details/78682323

docker compose的安装

如果是mac和windows10基本就不用安装了。软件包是自带的。在linux上需要自己安装。

进入github页面查看那个版本是最新的(最新的支持的docker版本也比较多)

可以把/download/[version]/decker 中的version替换成具体的版本号。

命令:

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

给可执行文件执行权限

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

图

搭建一个web环境(wordpress)来看、docker的一个小缺点

运行mysql容器、不需要暴漏端口

docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql

指定了两个环境变量、一个密码、一个数据库

创建wordpress的容器

docker run -d --name wordpress -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 wordpress

多容器的操作不方便

1、要从Dockerfile build image或者Dockerhub拉取image

2、要创建多个container

3、要管理这些container(启动停止删除)

Compose介绍

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

docker-compose默认控制文件名为:docker-compose.yml

三大概念

  • Services
  • Networks
  • Volumes

Services

一个service代表一个container,这个container可以从dockerhub的image来创建,或者从本地的Dockerfile build出来的image来创建

Service的启动类似docker run ,我们可以给其指定network和volume,所以可以给service指定network和Volume的应用

图

上面的意思相当于:

docker run -d –name nginx -v /root/wp_yunlan:/bitnami/nginx/ -p 80:80 -p 443:443 bitnami/nginx

图

environment

图片

一个简单的yml文件

version: '3'

services:

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

  mysql:
    image: mysql
    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如果目录下默认有docker-compose.yml文件、默认是找它。

如果没有的话可以用 -f参数指定。

docker-compose up 等于 docker-compose -f docker-compose.yml up命令

docker-compose -d up 后台运行 、不加-d 有logs 类似debug。

docker-compose up -d

图

其中docker-conpose中的exec 和docker exec 差不多

$ docker-compose exec mysql bash
# docker-compose exec mysql /bin/bash 等于上一条

图

常用命令

docker-compose images

docker-compose ps

docker-compose exec [service]

用docker-compose文件build并启动

图

Last modification:January 31, 2020
如果觉得我的文章对你有用,请随意赞赏