1.安装
# Linux安装(mac和windows不需要,desktop已经自带)
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 有的/usr/local/bin不让写导致报错,改为/opt/bin就行
sudo chmod +x /usr/local/bin/docker-compose
2.使用
1.启动
docker-compose up(默认找名为docker-compose.yml的文件)
docker-compose -f docker-compose.yml up(手动指定文件)
docker-compose up -d(后台启动)
2.查看
docker-compose ps
3.停止
docker-compose stop(单纯停止)
docker-compose down(除了volume和image,其他定义的容器相关都会删除)
4.列出docker-compose使用的image
docker-compose images
5.进入
# 即使通过docker-compose ps查看的服务名并不叫mysql,我们还是可以按下面的方式运行,不用管前缀
# 网络也会加前缀
docker-compose exec mysql /bin/bash
docker-compose exec wordpress /bin/bash
3.实践
# docker compose file version有1,2,3三种,推荐3,version1千万不要用,已经淘汰,2可以使用
# 2跟3最大的区别是2只能用于单机,3可以用于多机
# 2启动的app的多个容器会运行在同一机器上面
# 3启动的app的多个容器可以分别部署到不同的机器上面(通过docker swarm)
# 三大概念Services,Networks,Volumes
# Services
# 一个service代表一个container,这个container可以从docker hub的image来创建,或者从本地的Dockerfile build出来的image来创建
# service的启动类似docker run,我们可以给其指定network和volume,所以可以给service指定network和volume的引用
# 通过image创建
wget https://evernote-1258366890.cos.ap-guangzhou.myqcloud.com/1908151447.yml
# 通过Dockerfile创建
wget https://evernote-1258366890.cos.ap-guangzhou.myqcloud.com/1908151448.yml
4.水平扩展与负载均衡
# 水平扩展
# 报8080端口已经被占用
# 删除docker-compose.yml的ports即可扩展成功
# 但这样的方法并不好,所以我们使用负载均衡
docker compose up --scale web=3 -d
wget https://evernote-1258366890.cos.ap-guangzhou.myqcloud.com/1908151449.yml
# docker-compose是一个便于本地开发和测试环境下的工具,而不是用于部署生产环境app的工具
docker-compose build