docker-compose详解(介绍、快速⼊门、实例)
docker-compose应⽤
⼀、docker compose概述
Docker Compose是⼀个⽤来定义和运⾏复杂应⽤的Docker⼯具。⼀个使⽤Docker容器的应⽤,通常由多个容器组成。使⽤Docker Compose不再需要使⽤shell脚本来启动容器。
Compose 通过⼀个配置⽂件来管理多个Docker容器,在配置⽂件中,所有的容器通过services来定义,然后使⽤docker-compose脚本来启动,停⽌和重启应⽤,和应⽤中的服务以及所有依赖服务的容器,⾮常适合组合使⽤多个容器进⾏开发的场景
⼆、安装docker-compose
如果能访问公⽹,可以直接通过官⽅下载:
curl -L "github/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
三、docker-compose.yaml⽂件
介绍⼯作中常⽤的⼏个参数:
version # 指定 compose ⽂件的版本,必写
services # 定义所有的 service 信息, 必写
image # 镜像名称或镜像ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
restart: always # 容器总是重新启动。
container_name # 容器名
volumes # 挂载,可⽤于挂载配置⽂件,data等
command# 容器内执⾏什么命令
ports # 对外暴露的端⼝
environment # 添加环境变量
network_mode # 设置⽹络连接模式
如:
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
四、部署⽰例
1. 编写l⽂件
docker重启容器命令version: '3.6'
services:
mysql:
image: mysql:5.7
container_name: 'mysql'
ports:
- "0.0.0.0:3306:3306"
restart: always
environment:
MYSQL_USER: root
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/my_secret_pwd
(此处⽤密码⽂件存储密码,需要将密码⽂件挂载到容器中)
volumes:
-
"./data/:/var/lib/mysql"
- "/run/secrets/my_secret_pwd:/run/secrets/my_secret_pwd"
2. 在l⽂件所在⽬录下执⾏:
docker-compose up -d
#启动运⾏,如果已有镜像会直接运⾏,如果不存在镜像,会先拉取镜像再启动
docker-compose常⽤命令
常⽤命令介绍
docker-compose config -q 验证(l)⽂件配置,当配置正确时,不输出任何内容,当⽂件配置错误,输出错误信
息。
docker-compose ps显⽰所有容器
docker-compose up -d构建启动容器
docker-compose down删除当前容器(数据也会清除,慎⽤)docker-compose logs service_name查看指定service的⽇志
docker-compose logs -f service_name查看指定service的实时⽇志
docker-compose pause service_name暂停指定服务(停⽌提供服务,但是数据仍在)
docker-compose unpause
service_name
恢复指定服务
docker-compose stop service_name停⽌指定服务的容器
docker-compose start service_name启动指定服务的容器
docker-compose restart service_name重启指定服务
docker-compose rm service_name删除指定服务的容器(删除前需关闭此容器)
若⽤docker-compose部署服务,需要合理规避以下⼏点问题:
1. 若services关联的有数据库,应将数据库单独分离出来(再写⼀个docker-compose.yaml⽂件部署数据库),避免和其他services
写在同⼀个docker-compose.yaml⽂件中
2. 多个services之间相互关联,有强依赖性时(缺少任何⼀个services,整个服务都⽆法正常运⾏),可共⽤⼀个docker-
compose.yaml⽂件
3. 若services之间仅是关联关系,没有强依赖性,可单独运⾏并提供服务时,建议也将各个服务分离出来,便于后期维护、拓展
4. l⽂件中如果涉及到密码等敏感信息,都建议采⽤secrets字段,通过⽂件保存密码,再将密码⽂件权限设置为
600
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论