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 createdocker start,如果源yml文件有任何变化时,会重新创建容器。(构建+启动

2.docker-compose start是在容器已经存在的基础上执行的(启动容器

3.docker-compose startdocker start是Docker和Docker Compose中用于启动一个或多个容器的命令,但它们有一些区别:

  1. docker start是Docker CLI的原生命令,它用于启动一个或多个已经停止的容器。
  2. 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 文件实际上是同一种文件,只是扩展名不同。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐