文章目录
dockercomposeyml_1">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/bashdocker-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里面的服务)
dockercompose_up_dockercompose_start_docker_start_41">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 全部启动
dockercomposeyml_63">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=xxxxxenv_file:- ./env.pord- ./env.xxxxx.filedepends_on:- db #定义服务之间依赖关系,确保容器启动顺寻,先启动depends_on后面的指定服务,在启动当前的服务,允许多个服务同时指向一个服务。# 命名卷
volumes:static_volume:cache_volume:
docker_compose_99">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: myimagevolumes:- type: bindsource: /path/on/hosttarget: /path/in/containerread_only: true
yml 和 yaml 区别
yml 和 yaml 文件没有区别,都是 YAML(Yet Another Markup Language)文件的扩展名。YAML 是一种可读性高、用来表达数据序列化的格式。YAML 参考了其他多种语言,包括:C语言、Python、Perl,并从 XML、电子邮件的数据格式(RFC 2822)中获得灵感。
YAML 文件使用缩进和换行等符号来表示层次结构和序列关系,从而达到编写简单易读的数据文档的目的。
由于历史原因,许多 Windows 程序员仍然不敢使用具有三个以上字符的扩展名,因此选择使用 yml 代替。但这只是一种习惯,并不影响文件的解析或者使用。
因此,yml 和 yaml 文件实际上是同一种文件,只是扩展名不同。