八、Docker-Compose模版命令

简介: 八、Docker-Compose模版命令

docker-compose.yml文件模版介绍

模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。

version: "3"
services:
  webapp:
    image: mysql
    ports:
      - "80:80"
    volumes:
      - "/data"

YAML文件中的image代表使用Docker仓库中已经存在的镜像,我们之前使用都需要先构建一个镜像,然后在文件里面指定这个镜像才可以运行。

这样比较麻烦,有一个命令比较方便

Build

表示:通过Docker-compose在启动容器之前根据dockerfile构建镜像,然后根据镜像启动容器

version: '3'
services:
  webapp:
    build: ./dir

使用 context 指令指定 Dockerfile 所在文件夹的路径

使用 dockerfile 指令指定 Dockerfile 文件名,如果不指定文件名默认就是寻找Dockerfile

command

覆盖容器启动后默认执行的命令

command: echo "hello world"

container_name

指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式

container_name: mysqltest

不推荐使用

depends_on

解决容器的依赖、启动先后的问题。以下例子中会先启动 mysql再启动 tomcat

version: '3'
services:
  web:
    build: ./
    depends_on:
      - mysql
      - tomcat
  tomcat:
    image: tomcat01
  mysql:
    image: mysql01

web服务会等待mysql、tomcat服务启动的差不多了再启动,不会等到被依赖服务完全启动再启动

environment

设置环境变量。可以使用数组或字典两种格式

env_file

跟environment作用类似,也是设置环境变量,不过这个是指定文件的形式

env_file: .env
env_file:
  - ./common.env  #文件的路径
  - ./apps/web.env
  - /opt/secrets.env

相比environment把环境比阿里直接写在yaml中安全一点

expose

暴露端口

本来在Dockerfile中暴露端口,这个命令意思可以不用在Dockerfile中填写端口,一般不用

image

指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像,相当于docker run images(镜像名)

networks

用来指定启动的容器使用的网桥(网络),相当于docker run --network

每个容器指定同一个网桥,那么只要进入一个容器的内部,使用另外一个容器的ip就可以访问到

docker network ls #查看Docker中的网桥

查看网桥的详细信息

ports

暴露宿主端口:容器端口的信息,相当于docker run -p

volumes

暴露宿主路径:容器路径的信息,相当于docker run -v

restart

指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped

相当于docker run --restart=always

总结

掌握以上命令之后,如果需要在文件中跑一个es服务,自己写命令可能一点头绪都没有,可以按照这种运行命令改编

docker run -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

改编之后YAML文件

redis:
   image: redis:5.6
   ports: 
    -3306:3306
   volumes: 
    - /mydata/redis/data:/data
    - /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
   environment:
    - /usr/local/etc/redis/redis.conf --appendonly yes
相关文章
|
11月前
|
存储 Java Linux
【Docker】(2)还在浏览网页寻找Docker命令?本文全面列举与使用Docker里的各个命令!想要什么命令直接从本文拿!
docker有着比VM更少的抽象层 由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源 因此在CPU、内存利用率上Docker将会在效率上有明显优势 docker利用的时宿主机的内核,而不需要加载操作系统OS内核 当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核 进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程时分钟级别的。 而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个Docker容器只需
954 124
|
安全 Unix Linux
Docker中授权普通用户使用docker命令以及解决无权限访问/var/run/docker.sock错误。
通过上述步骤,可以有效解决普通用户无法使用Docker命令的问题,同时处理 `/var/run/docker.sock`权限错误。这样的设置不仅方便用户使用Docker提供的各项服务,同时还能保护系统的安全性。在进行此类配置更改时,请确保理解每一步骤的作用及潜在的安全风险,尤其是在修改文件权限时。在实际的操作中,始终应该努力保持系统的最低必要权限,避免过度放宽权限,这是保障系统安全的一个重要方针。
4105 75
|
Docker 容器
Docker run命令-p参数详解
本文介绍Docker端口映射的基础用法。通过`docker run -p <宿主机端口>:<容器端口>`实现端口映射,例如`-p 5000:80`将宿主机5000端口映射到容器80端口,外部访问宿主机5000端口时流量会转发至容器内部的80端口。示例命令中,`-d`用于后台运行,`--restart=always`确保容器自动重启,`--name`指定容器名称。部署完成后可通过`http://服务器IP地址:5000`验证服务是否正常运行。
1551 57
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
2414 30
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
675 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
Ubuntu Linux 开发者
常用的Docker命令:docker_cmd_sheet
以上就是一些常用的Docker命令,希望能帮助你更好地驾驭这个强大的工具。记住,Docker就像是一个魔法咒语,只有真正理解和熟练使用,才能发挥出它的最大魔力。
294 22
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
848 78
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
485 16
|
Docker 容器
熟悉Docker容器管理命令:start、stop与restart详细使用指南
掌握这些Docker容器管理命令对于维护应用程序的正常运行至关重要。在实际操作中,应注意容器配置、关联资源以及日志等信息,确保各项操作都能够顺畅并且安全地执行。
3520 0
|
关系型数据库 MySQL Docker