本人在编写docker-compose.yml文件时网络模式设置一直有问题,然后才去找docker-compose文件里面配置的字段各自的含义,特摘抄如下常用配置字段:
Docker Compose配置常用字段
字段 | 描述 |
build | 指定Dockerfile文件名(要指定的Dockerfile文件需要在build标签的子级标签中用dockefile标签指定) |
dockerfile | 构建镜像上下文路径 |
context | 可以是dockerfile路径,或者时执行git仓库的url地址 |
images | 指定镜像(已存在) |
command | 执行命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令) |
container_name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。 |
deploy | 指定部署和运行服务相关配置,只能在swarm模式使用 |
environment | 添加环境变量 |
networks | 加入网络,引用顶级networks下条目 |
network-mode | 设置容器的网络模式 |
ports | 暴露容器端口,与-p相同,但是端口不能低于60 |
volumes | 挂载一个宿主机目录或命令卷到容器,命令卷要在顶级volumes定义卷名称 |
volumes_from | 从另一个服务或容器挂载卷, 可选参数:ro和rw(仅版本‘2’支持) |
hostname | 在容器内设置内核参数 |
links | 连接诶到另一个容器,- 服务名称[ : ] |
privileged | 用来给容器root权限,注意是不安全的,true |
restart | 重启策略,定义是否重启容器 1、no,默认策略,在容器退出时不重启容器 2、on-failure,在容器非正常退出时(退出状态非0),才会重启容器3、on-failure: 3 在容器非正常退出时,重启容器,最多重启3次 4、always,在容器退出时总是重启容器, 5、unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。 |
depends_on | 此标签用于解决容器的依赖,启动先后问题。如启动应用容器,需要先启动数据库容器。php:depends_on:- apache- mysql |
源文章:Docker之compose介绍_docker-compose_辛辣天蝎666的博客-CSDN博客
微服务编排中使用可networks配置,总是无法配置到host网络模式,最后才发现需要用network-mode指定才可以指定。
顺带将自己总结的docker-compose命令也到下面:
compose常用命令
命令 | 概述 |
docker-compose -h | #查看帮助 |
docker-compose up | #启动所有docker-compose服务 |
docker-compose up -d | #启动所有docker-compose服务并后台运行 |
docker-compose down | #停止并删除容器、网络、卷、镜像 |
docker-compose exec [yml里面的服务名称 ] | #进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务名称 /bin/bash |
docker-compose ps | #展示当前docker-compose编排过的运行的所有容器 |
docker-compose top | #展示当前docker-compose编排过的容器进程 |
docker-compose logs | #yml里面的服务id #查看容器输出日志 |
docker-compose config | #检查配置 |
docker-compose config -q | #检查配置,有问题才输出 |
docker-compose restart | #重启服务 |
docker-compose start | #启动服务 |
docker-compose | #停止服务 |
一个是docker-compose.yml配置文件,一个是compose命令
然后再次用命令编排容器
成功