云原生 | Docker-Compose 容器编排
Docker-compose
负责实现对 Docker 容器集群的快速编排负责实现对 Docker 容器集群的快速编排
当我们有多个容器需要启动的时候,我们可以用 docker-compose 配置docker-compose.yml
文件进行容器的管理
Compose
中有两个重要的概念:
- 服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 - 项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。
Compose
的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
安装
- 运行以下命令以下载Docker Compose的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
- 卸载:
sudo rm /usr/local/bin/docker-compose
常用指令
docker-compose --version
查看版本号docker-compose -f docker-compose.yml up -d
在后台启动当前目录下的docker-compose.yml
文件docker-compose logs -f
查看日志-f是交互式最后docker-compose down
此命令将会停止up
命令所启动的容器,并移除网络docker-compose stop
停止已经处于运行状态的容器,但不删除它docker-compose start
启动docker-compose restart
重新启动docker-compose images
使用的镜像docker-compose ps
查看当前目录下 Compose 文件 运行的容器docker-compose top
查看各个服务容器内运行的进程。查看各个服务容器内运行的进程。
实战
Gin+MySQL+Redis
项目
此时我们已有的东西是:mysql,redis,mall(项目)
三个镜像,但是都没有启动,也就是说此时的mysql没有设置密码,数据库
配置docker-compose.yml
文件
version: '2'
services:
civil:
build: ./
image: mall:1.0
container_name: robking_mall
restart: always
environment:
MYSQL_DSN: "root:123456@tcp/test?charset=utf8&parseTime=True&loc=Local"
ports:
- 9999:9999
depends_on:
- mysql
- redis
mysql:
container_name: robking_mysql
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
volumes:
- /var/lib/mysql:/var/lib/mysql
ports:
- 3306:3306
redis:
container_name: robking_redis
image: redis
restart: always
volumes:
- /usr/local/redis:/usr/local/redis
ports:
- 6379:6379
这个文件其实就是将三个镜像运行成容器的指令用文件的方式进行配置,然后运行起来,项目是依赖mysql和redis,所以会先让这两个先启动,然后再启动项目容器
docker-compose -f docker-compose.yml up -d
创建并启动三个容器。 -f docker-compose.yml
如果文件在当前目录可以省略
评论区