docker-compose.yml配置
文章目录
docker-compose.yml配置
常用命令
docker --version #查看版本
docker-compose --version #查看版本
docker-compose -h # 查看帮助
docker-compose up # 启动所有docker-compose服务
docker-compose up -d # 启动所有docker-compose服务并后台运行
docker-compose -f /xxx/xxxx/docker-compose-prod.yml up -d / down #指定具体的docker-compose配置文件执行
docker-compose down # 停止并删除容器、网络、卷、镜像 不会删除命名卷,以防止重要数据的丢失。
docker-compose down --volumes ######谨慎使用
docker-compose exec yml里面的服务id # 进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /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 # 重启服务(可以指定yml里面的服务)
docker-compose start # 启动服务(可以指定yml里面的服务)
docker-compose stop # 停止服务(可以指定yml里面的服务)
docker-compose up 与docker-compose start ,docker start的区别
1.docker-compose up 会依次执行docker create和docker start,如果源yml文件有任何变化时,会重新创建容器。(构建+启动)
2.docker-compose start是在容器已经存在的基础上执行的(启动容器)
3.docker-compose start和docker start是Docker和Docker Compose中用于启动一个或多个容器的命令,但它们有一些区别:
docker start是Docker CLI的原生命令,它用于启动一个或多个已经停止的容器。docker-compose start是Docker Compose工具提供的命令,它用于启动由docker-compose.yml文件定义的服务。
使用docker start时,你需要知道要启动的容器的ID或名称。使用docker-compose start时,你需要在当前目录或使用-f参数指定docker-compose.yml文件的路径,然后跟上要启动的服务名称。
# 使用Docker CLI启动名为my-container的容器
docker start my-container
# 使用Docker Compose在docker-compose.yml文件所在目录启动名为web的服务
docker-compose start web
docker-compose start 全部启动
docker-compose.yml说明
version: '3' 指定编排文件的版本
services:
nginx: #服务名
container_name: ldsx_nginx #容器名字
image: nginx:5.5 #nginx镜像
restart: always #重启策略 默认为no 不会重启
volumes:
# 命名卷
- static_volume:/xx/xxx/xxx/static
- cache_volume:/xxx/xxxx/xxx/xxx #定义数据卷映射,用于持久化数据或者容器之间共享数据
# 挂载卷轴
- /xxx/xxxx/xxxxx:/xxxx/xxxx/xxxx #宿主机:容器
prots:
- 3000:80 #宿主机端口:容器端口
- 8443:443 #可以配置多个端口
#环境变量设置可以直接设置值也可以通过文件设置,但是不确定能否同时设置
environment:
- MY_VARIABLE=some_value #设置环境变量可以设置多个
- xxxxx=xxxxx
env_file:
- ./env.pord
- ./env.xxxxx.file
depends_on:
- db #定义服务之间依赖关系,确保容器启动顺寻,先启动depends_on后面的指定服务,在启动当前的服务,允许多个服务同时指向一个服务。
# 命名卷
volumes:
static_volume:
cache_volume:
docker compose执行顺序
在Docker Compose中,服务(services)的启动顺序默认是按照它们在docker-compose.yml文件中出现的顺序进行的。如果一个服务依赖于另一个服务,后者会先于前者启动。
如果你需要控制具体的启动顺序,可以使用depends_on选项来指定服务之间的依赖关系。depends_on不仅定义了服务之间的依赖关系,还影响了服务启动的顺序,被依赖的服务会先于依赖它的服务启动。
命名卷和挂载卷
在Docker Compose中,volumes关键字用于指定挂载的卷。它可以是两种类型:一种是命名卷(named volume),另一种是绑定挂载卷(bind mount volume)。
1.命名卷存储在Docker管理的宿主机文件系统中,在Docker主机上创建的独立于容器生命周期的持久化存储区域。它们存储在Docker数据目录中,通常是在 /var/lib/docker/volumes/ 下。命名卷可以用于持久化容器内的数据,即使容器被删除或重新创建,数据也不会丢失。这使得在开发多容器Docker应用时,可以更容易地管理数据的持久化和共享。(type named)
如果你想在执行 docker-compose down 时同时删除命名卷,可以使用额外的参数 --volumes。
docker-compose down 命令用于停止并移除由 docker-compose up 创建的所有容器、网络、卷、和默认网络。但是,它不会删除命名卷,以防止重要数据的丢失。
docker-compose down --volumes #谨慎使用
2.而绑定挂载卷则存储在你指定的宿主机目录中(type bind)。
如果你想要使用更多的配置选项,比如只读模式或使用默认的Docker卷,你可以这样做:
version: '3'
services:
myservice:
image: myimage
volumes:
- type: bind
source: /path/on/host
target: /path/in/container
read_only: true
yml 和 yaml 区别
yml 和 yaml 文件没有区别,都是 YAML(Yet Another Markup Language)文件的扩展名。YAML 是一种可读性高、用来表达数据序列化的格式。YAML 参考了其他多种语言,包括:C语言、Python、Perl,并从 XML、电子邮件的数据格式(RFC 2822)中获得灵感。
YAML 文件使用缩进和换行等符号来表示层次结构和序列关系,从而达到编写简单易读的数据文档的目的。
由于历史原因,许多 Windows 程序员仍然不敢使用具有三个以上字符的扩展名,因此选择使用 yml 代替。但这只是一种习惯,并不影响文件的解析或者使用。
因此,yml 和 yaml 文件实际上是同一种文件,只是扩展名不同。
更多推荐
所有评论(0)