更牛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]