赞
踩
格式为 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: #项目id
build: #启动服务时,先将build中指定的dockerfile打包成镜像,再运行该镜像
context: jenkins-demo #指定上下文目录dockerfile所在目录[相对、绝对路径都可以]
dockerfile: Dockerfile #文件名称
args: #指定构建镜像时候的变量
buildno: 1
container_name: jenkins-demo
ports:
- "8881:8881"
version: "3.0"
services:
redis:
container_name: redis
image: redis:7.0.5-alpine
ports:
- "6379:6379"
command: "redis-server --appendonly yes" #run镜像之后,appendonly覆盖容器内的默认命令
version: "3.0"
services:
redis:
#container_name: redis
container_name: docker-web-container
注意: 指定容器名称后,该服务将无法进行扩展(scale),因为 Docker 不允许多个容器具有相同的名称。
version: '3'
services:
web:
image: ruoyi
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
注意:web 服务不会等待 redis db 「完全启动」之后才启动。
version: "3.0"
services:
mysql:
container_name: mysql8
image: mysql:8.0.29
ports:
- "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: mysql8
image: mysql:8.0.29
ports:
- "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: tomcat02
image: tomcat:8.0.15-jre7 #镜像版本
ports:
- "8082:8080"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost" ]
interval: 1m30s
timeout: 10s
retries: 3
version: "3.0"
services:
tomcat8082:
container_name: tomcat02
image: ubuntu
#image: orchardup/postgresql
#image: a4bc65fd
version: "3.0"
services:
tomcat8082:
container_name: tomcat02
image: tomcat:8.0.15-jre7 #镜像版本
ports:
- "8082:8080"
networks: #代表当前服务使用那个网络桥
- hello
networks: #定义服务使用到的网桥
hello: #定义上面的服务用到的网桥名称, 默认创建的就是bridge
external:
true #使用外部指定网桥,注意,网桥必须存在[docker network create -d bridge hello]
version: "3.0"
services:
tomcat8082:
container_name: tomcat02
image: tomcat:8.0.15-jre7 #镜像版本
ports:
- "8082:8080"
注意:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 并且没放到引号里,可能会得到错误结果,因为 YAML 会自动解析 xx:yy 这种数字格式为 60 进制。为避免出现这种问题,建议数字串都采用引号包括起来的字符串格式。
version: "3.0" services: tomcat8080: #服务id container_name: tomcat01 #相当于run --name image: tomcat:8.0.15-jre7 #镜像版本(没有的话会自动拉取) 相当于run image ports: #完成host与容器的端口映射 相当于run p - "8080:8080" #(防止出错,官方建议用""包起来) volumes: #完成宿主机与容器中目录数据卷的映射(可以挂在多个) 相当于run -v #- /usr/local/software/tomcat/webapps:/usr/local/tomcat/webapps #使用自定义路径映射 - tomcatWebapps:/usr/local/tomcat/webapps networks: #代表当前服务使用那个网络桥 相当于run network - hello sysctls: net.core.somaxconn: 1024 net.ipv4.tcp_syncookies: 0 #sysctls: #- net.core.somaxconn=1024 #- net.ipv4.tcp_syncookies=0
例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。
version: "3.0"
services:
tomcat8080: #服务id
container_name: tomcat01 #相当于run --name
image: tomcat:8.0.15-jre7 #镜像版本(没有的话会自动拉取) 相当于run image
ports: #完成host与容器的端口映射 相当于run p
- "8080:8080" #(防止出错,官方建议用""包起来)
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
version: "3.0"
services:
tomcat8080: #服务id
container_name: tomcat01 #相当于run --name
image: tomcat:8.0.15-jre7 #镜像版本(没有的话会自动拉取) 相当于run image
ports: #完成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确定使用自定义卷名 注意,一旦使用外部自定义卷名,启动服务之前必须手动创建
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。