docker-compose官网

格式为 docker-compose up [options] [SERVICE…]
docker-compose up -d # -d是后台启动

此命令将会停止 up 命令所启动的容器,并移除网络
#必须执行该命令的相同路径下有docker-compose.yml文件
docker-compose down

进入指定的容器。
docker-compose exec rabbitmq bash
格式为 docker-compose ps [options] [SERVICE…]。
列出项目中目前的所有容器。
选项:
-q: 只打印容器的 ID 信息。
docker-compose ps

格式为 docker-compose restart [options] [SERVICE…]。
选项:
-t: --timeout TIMEOUT 指定重启前停止容器的超时(默认为 10 秒)。
docker-compose restart
格式为 docker-compose rm [options] [SERVICE…]。
推荐先执行 docker-compose stop 命令来停止容器。
选项:
-f: --force 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
-v: 删除容器所挂载的数据卷。
docker-compose rm -f

格式为 docker-compose start [SERVICE…]。
docker-compose start

格式为 docker-compose stop [options] [SERVICE…]。
选项:
-t: --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
docker-compose stop -t1000

docker-compose top

docker-compose images

官网详细模板文件介绍
1、模板文件是使用 Compose 的核心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。
2、默认的模板文件名称为docker-compose.yml格式为yml格式
3、每个指令都必须通过image指令指定镜像或者build(需要Dockerfile)指令来自动构建生成镜像
version: "3.0"
services:demo: #项目idbuild: #启动服务时,先将build中指定的dockerfile打包成镜像,再运行该镜像context: jenkins-demo #指定上下文目录dockerfile所在目录[相对、绝对路径都可以]dockerfile: Dockerfile #文件名称args: #指定构建镜像时候的变量buildno: 1 container_name: jenkins-demoports:- "8881:8881"
version: "3.0"
services:redis:container_name: redisimage: redis:7.0.5-alpineports:- "6379:6379"command: "redis-server --appendonly yes" #run镜像之后,appendonly覆盖容器内的默认命令
version: "3.0"
services:redis:#container_name: rediscontainer_name: docker-web-container
注意: 指定容器名称后,该服务将无法进行扩展(scale),因为 Docker 不允许多个容器具有相同的名称。
version: '3'
services:web:image: ruoyidepends_on:- db- redisredis:image: redisdb:image: postgres
注意:web 服务不会等待 redis db 「完全启动」之后才启动。
version: "3.0"
services:mysql:container_name: mysql8image: mysql:8.0.29ports:- "3306:3306"#- MYSQL_ROOT_PASSWORD=root #指定值env_file: #替换environment的配置[直接给该文件、不会泄露密码等信息]- mysql.env #此处为相对路径,也可以写绝对路径[里面的格式key=value,并且支持#的注释]- ./common.env- ./apps/web.env- /opt/secrets.env
#root的密码
MYSQL_ROOT_PASSWORD=root
version: "3.0"
services:mysql:container_name: mysql8image: mysql:8.0.29ports:- "3306:3306"environment: #环境变量[此处写得太过敏感,给文件容易被别人知道]- MYSQL_ROOT_PASSWORD=root #指定值- MYSQL_ROOT_PASSWORD: password- TZ: Asia/Shanghai
如果变量名称或者值中用到 true|false,yes|no 等表达 布尔 含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义。这些特定词汇,包括
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
version: "3.0"
services:tomcat8082:container_name: tomcat02image: tomcat:8.0.15-jre7 #镜像版本ports:- "8082:8080"healthcheck:test: [ "CMD", "curl", "-f", "http://localhost" ]interval: 1m30stimeout: 10sretries: 3
version: "3.0"
services:tomcat8082:container_name: tomcat02image: ubuntu #image: orchardup/postgresql#image: a4bc65fd
version: "3.0"
services:tomcat8082:container_name: tomcat02image: tomcat:8.0.15-jre7 #镜像版本ports:- "8082:8080"networks: #代表当前服务使用那个网络桥- hello
networks: #定义服务使用到的网桥hello: #定义上面的服务用到的网桥名称, 默认创建的就是bridgeexternal:true #使用外部指定网桥,注意,网桥必须存在[docker network create -d bridge hello]
version: "3.0"
services:tomcat8082:container_name: tomcat02image: tomcat:8.0.15-jre7 #镜像版本ports:- "8082:8080"
注意:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 并且没放到引号里,可能会得到错误结果,因为 YAML 会自动解析 xx:yy 这种数字格式为 60 进制。为避免出现这种问题,建议数字串都采用引号包括起来的字符串格式。
version: "3.0"
services:tomcat8080: #服务idcontainer_name: tomcat01 #相当于run --nameimage: tomcat:8.0.15-jre7 #镜像版本(没有的话会自动拉取) 相当于run imageports: #完成host与容器的端口映射 相当于run p- "8080:8080" #(防止出错,官方建议用""包起来)volumes: #完成宿主机与容器中目录数据卷的映射(可以挂在多个) 相当于run -v#- /usr/local/software/tomcat/webapps:/usr/local/tomcat/webapps #使用自定义路径映射- tomcatWebapps:/usr/local/tomcat/webappsnetworks: #代表当前服务使用那个网络桥 相当于run network- hellosysctls:net.core.somaxconn: 1024net.ipv4.tcp_syncookies: 0#sysctls:#- net.core.somaxconn=1024#- net.ipv4.tcp_syncookies=0
例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。
version: "3.0"
services:tomcat8080: #服务idcontainer_name: tomcat01 #相当于run --nameimage: tomcat:8.0.15-jre7 #镜像版本(没有的话会自动拉取) 相当于run imageports: #完成host与容器的端口映射 相当于run p- "8080:8080" #(防止出错,官方建议用""包起来)ulimits:nproc: 65535nofile:soft: 20000hard: 40000
version: "3.0"
services:tomcat8080: #服务idcontainer_name: tomcat01 #相当于run --nameimage: tomcat:8.0.15-jre7 #镜像版本(没有的话会自动拉取) 相当于run imageports: #完成host与容器的端口映射 相当于run p- "8080:8080" #(防止出错,官方建议用""包起来)volumes: #完成宿主机与容器中目录数据卷的映射(可以挂在多个) 相当于run -v#- /usr/local/software/tomcat/webapps:/usr/local/tomcat/webapps #使用自定义路径映射- tomcatWebapps:/usr/local/tomcat/webapps #使用声明数据卷的方式
#声明数据卷
volumes: #声明上面服务所使用的自动的卷名tomcatWebapps: #声明指定的卷名 compose会自动创建改卷明,但是会在之前加入项目名external: #使用自定义的卷名false #true确定使用自定义卷名 注意,一旦使用外部自定义卷名,启动服务之前必须手动创建
下一篇:有乐美奶茶改编搞笑词