可以一键批量管理docker的容器。将所有需要创建的容器定义在compose配置文件中,通过一个命令一键可以创建并运行这些容器,而不需要一个一个启动。可以批量启动停止服务。
安装
#安装Docker-Compose并安装到/usr/local/bin/docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose#给/usr/local/bin/docker-compose授权
chmod +x /usr/local/bin/docker-compose
配置文件
Docker Compose 使用 YAML 文件来定义多服务的应用。YAML 是 JSON 的一个子集,因此也可以使用JSON。
Docker Compose 默认使用文件名 docker-compose.yml。当然,也可以使用 -f 参数指定具体文件。
#版本有1 2 3
version:'3'
#定义服务,就是定义要启动的容器
services:#容器服务名mysql-101:#容器镜像image: mysql:5.7#端口,容器的3306映射到宿主机的3308端口ports:- "3308:3306"#数据卷,mysql01-conf数据卷会和容器内部的/etc/mysql/conf.d挂载。volumes:- mysql01-log:/var/log/mysql- mysql01-data:/var/lib/mysql- mysql01-conf:/etc/mysql/conf.d- /etc/localtime:/etc/localtime:ro#环境设置,这里设置mysql的root密码environment:- MYSQL_ROOT_PASSWORD=root#容器重启策略:当容器出现故障或退出时会自动重启。手动不会。restart: always#容器名称container_name:mysql-01#使用的网络networks:- mall-netmysql-102:image: mysql:5.7ports:- "3309:3306"volumes:- mysql02-log:/var/log/mysql- mysql02-data:/var/lib/mysql- mysql02-conf:/etc/mysql/conf.d- /etc/localtime:/etc/localtime:roenvironment:- MYSQL_ROOT_PASSWORD=rootrestart: alwayscontainer_name:mysql-02networks:- mall-netnginx:image: nginxports:- "80:80"volumes:- nginx-conf:/etc/nginx- nginx-html:/usr/share/nginx/html- /etc/localtime:/etc/localtime:rorestart: alwaysnetworks:- mall-net#指明上面所用到的数据卷
volumes:mysql01-log:mysql01-data:mysql01-conf:mysql02-log:mysql02-data:mysql02-conf:nginx-conf:nginx-html:#网络
networks:mall-net:ipam:driver: defaultconfig:- subnet: "188.188.0.0/16"
命令
docker-compose up
: 创建并启动容器
docker-compose up -d
:后台运行容器,不会看到很多输出信息
docker-compose restart 服务名
:重启容器,服务名是容器对应的服务名,在yaml文件的services的第一行
docker-compose down [选项]
:停止在 docker-compose up 运行启动的容器,并删除配置文件中定义的网络或默认网络
选项:1)--rmi type 删除镜像,类型必须是:'all': 删除任何服务使用的所有镜像。'local': 只删除没有由“image”字段设置的自定义标签2)-v, --volumes 删除卷3)--remove-orphans 删除Compose文件中未定义的服务。4)-t,——timeout timeout指定以秒为单位的关机超时时间。(默认值:10)
docker volume ls
:查看docker创建的数据卷
docker volume inspect 数据卷名称
:查看数据卷的具体信息,包括所在实际路径。docker存放卷的位置一般为:/var/lib/docker/volumes/