【docker】docker-compose常用语法与编写实战

举报
钧瑜 发表于 2023/10/26 21:54:40 2023/10/26
【摘要】 【docker】docker-compose常用语法与编写实战

今天和大家分享下docker-compose的一些常用语法和编写实战

docker-compose是一个二进制文件,我们通常都是通过github把它下载下来,然后给他执行的权限。
下载docker-compose,在github上下载,下载完后记得把名字改一下,最好改为docker-compose, 然后通过ssh工具上传到服务器上 /usr/local/bin目录下
然后赋予执行权限
Chmod +x /usr/local/bin/docker-compose
然后查看 是否安装成功

docker-compose --version


 docker-compose是一个用来编排容器的方式,它可以编排单机环境下的容器。比如一台服务器中,你要起一个web容器服务,一个redis容器服务,那么你就可以在docker-compose文件中编写。

docker-compose 常用的语法

docker-compose ps                    列出所有运行的容器
docker-compose logs                 查看服务日志输出
docker-compose build                构建或者重新构建服务(这里只是构建,还没有启动)
docker-compose start|stop         启动|停止已存在的某个或多个容器
docker-compose rm                    删除指定的某个容器 
docker-compose -f docker-compose-alarm.yml down 停止并删除该yaml文件生成的镜像、容器、网络、数据卷等操作
docker-compose -f docker-compose-alarm.yml up -d  构建、启动容器(一般都是用这条命令,包含了构建和启动)
-f 后跟的是指定文件(docker-compose 命令默认使用的配置文件是当前目录中的 docker-compose.yml 文件,当然我们可以通过 -f 选项指定一个其它名称的配置文件)  -d 是以后台的方式运行容器。不会在终端上打印运行日志

docker-compose.yml文件语法

因为我们一般是创建一个docker-compose.yml文件,在这个yml文件中,我们来编写命令行。yaml格式的文件,有点类似于json的键值对格式。

注意:冒号后面要空一格,yaml格式的文件主要是靠空格来划分作用域的。

#docker-compose的例子
version: "2"
services:
 TestCompose:
   build: /root/test-Dockerfile   #在docker-compose中,build只能指向一个目录
   image: "this-docker-compose-test:test-docker-compose"
   container_name: docker-compose-TestContainer
   restart: always
   env_file: /opt/docker-compose-envTest/config/.env
   command: /bin/bash -c  "java -jar /opt/jar/TEST-alarm-center.jar"
   ports:
      -    "8011:8080"
   volumes:
      - /data/test:/data/test
      - ./jar/:/opt/jar/
   depends_on:
      -    redis
 redis:
   image: redis
#version 填写的是compose的版本号
#services是服务的意思
#Testcompose是服务的名字,一个services中可以含有多个服务
#Build 是构建的意思,如果我们的镜像是dockerfile文件,那么我们就用build构建一个镜像,build 后面的参数,是指向dockerfile文件目录的参数
#Image 是镜像,如果没有build 那么image就是直接拉取的官方镜像;如果有build,那么image就是build后构建的镜像的名字
#Container_name 就是构建后的容器的名字
#restart: always 这个意思就是,当docker服务重启的时候,docker里面的容器也跟着自动重新启动
#如果没有restart: always 这条命令,那么重启docker服务的时候,里面的容器并不会自动启动
 
#env_file:存放环境变量的目录 文件名(一般都是env)        
#上文的.env是隐藏文件 这里我们要注意,你存放在.env文件里的环境变量服务对象是container(容器)而不是我们的docker-compose.yml文件
#有其他文档说明:当你的.env文件就叫.env文件的时候,它设置的环境变量也对docker-compose.yml文件生效     (暂未实操)
#.env文件编写格式  例子如下,注意注释不要省略
 
#nacos注册地址
REGISTER_HOST=192.168.66.66:8848
#nacos用户名
REGISTER_USER=CN_tester
 
 
#command  容器启动后默认执行的命令,一般是启动容器里的服务
#  /bin/bash -c 的意思表示命令后面的参数将会作为字符串读入作为执行的命令。(简单来说后面跟的就是执行语句,启动服务) 
 
 
#Ports就是映射端口:容器端口
#Volumes 宿主机目录:容器目录
#Depends_on 依赖,比如我启动的这个TestCompose服务,就需要先启动redis这个服务;depends_on就是一个容器启动顺序的命令
 


docker-compose.yml文件通常是放在Dockerfile的同级目录或者子目录下的

 写完yaml文件后,只需要输入命令行,即可启动服务

docker-compose -f docker-compose-alarm.yaml up -d
#指定生成服务的yaml文件,这样即可启动你想要启动的服务

2个博客id : 钧瑜 /好学的小师弟

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。