本博客将记录博主学习b站编程不良人的Docker的总结,虽然以前也有使用过docker,但都是一些最基本的用法,这次将会全面认真的学习Docker。
015:compose简介
-
什么是docker compose
Compose项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排 -
Compose 定位
Compose 定位是定义和运行多个 Docker 容器的应用 ,同时可以对多个容器进行编排 -
Compose 核心概念
- 服务(service):一个服务对应一个应用容器,在一个项目中可以存在多个服务
- 项目(project):由一组关联的应用容器组成的一个完善业务单元,在 docker-compose.yml 文件中定义
-
Compose 安装
- 下载:docker-compose-Linux-x86_64
- 将其上传到linux服务器下的 /usr/local/bin
- 改名为docker-compose
- 修改权限:
sudo chmod +x /usr/local/bin/docker-compose
-
使用 docker-compose -v 检查
016:docker-compose 入门
-
创建一个 docker-compose.yml文件
-
在配置文件中定义一个项目存在哪些服务
version "3.8" service: tomcat: # 服务名唯一 image: tomcat:8.0-jre8 #这个服务所依赖的镜像 ports: - 8080:8080
-
运行docker-compose
docker-compose up # 启动这个项目的所有服务,必须保证运行命令的目录存在docker-compose.yml
017:docker-compose 命令模板
-
基础命令示例:
version: "3.8" services: demo: build: #启动服务时先将build命令指定dockerfile打包成镜像,在运行该镜像 context: ./demo #指定上下文目录dockerfile所在目录 dockerfile: Dockerfile container_name: demo ports: - "8083:8081" networks: - hello depends_on: - tomcat01 - mysql tomcat01: container_name: tomcat01 # 相当于--name image: tomcat:8.0-jre ports: - "8080:8080" volumes: # - /root/apps:/usr/local/tomcat/webapps # 自定义路径映射 - tomcatwebapps01:/usr/local/tomcat/webapps networks: #使用的网桥 - hello depends_on: # 代表这个容器必须依赖哪些容器启动之后(并非完全启动之后)才能启动 - tomcat02 # 写的是服务名 - redis - mysql healthcheck: # 心跳检测 test: ["CMD","curl","-f","http://localhost"] interval: 1m30s timeout: 10s retries: 3 tomcat02: container_name: tomcat02 # 相当于--name image: tomcat:8.0-jre ports: - "8081:8080" volumes: # - /root/apps:/usr/local/tomcat/webapps # 自定义路径映射 - tomcatwebapps02:/usr/local/tomcat/webapps networks: #使用的网桥 - hello #sysctls: #用来修改容器中系统内部参数,并不是必须, # 有些服务启动受容器内操作系统参数限制可能会无法启动,必须通过修改容器中参数才能启动,如es #- net.core.somaxconn=1024 #- net.ipv4.tcp_sycookies=0 ulimits: #用来修改容器中系统内部进程数限制,日后使用时可根据当前容器运行服务要求进行修改 nproc: 65535 nofile: soft: 20000 hard: 40000 mysql: image: mysql:5.7.32 container_name: mysql ports: - "3307:3306" volumes: - mysqldata:/var/lib/mysql - mysqlconf:/etc/mysql #environment: # 环境设置,重新设置密码 # - MYSQL_ROOT_PASSWORD=root env_file: # 用来将environment环境中配置放入指定配置文件中 (相对来说安全) - ./mysql.env (路径可以绝对,可以相对) networks: - hello redis: image: redis:5.0.10 container_name: redis ports: - "6379:6379" volumes: - redisdata:/data networks: - hello command: "redis-server --appendonly yes" # run镜像之后用来覆盖容器内容默认命令 volumes: # 声明上面服务所使用的自动创建的卷名 mysqldata: mysqlconf: tomcatwebapps02: tomcatwebapps01: # 声明指令的卷名,compose自动创建该卷名但会名称前加入项目名_ external: # 是否为外部卷名 false # 如果为true则该数据卷必须已经手动创建过 networks: # 定义服务的网桥 hello: # 定义上面的服务用到的网桥名称,默认是bridge external: # 是否为外部网桥 false # 如果为true则该网桥已经手动创建过
18:compose 指令
- 模板指令:
用来书写在docker-compose.yml文件中指令称之为模板指令,用来为服务进行服务的。 - 指令:
用来对整个docker-compose.yml对应的这个项目操作,书写docker-compose命令之后命令docker-compose up常用指令
- up 指令:用来启动所有docker-compose服务
- 选项: -d 后台启动所有服务
- down 指令:停掉up所启动的容器,并移除网络
- exec 进入指定的容器
docker-compose exec tomcat01(docker-compose.yml中声明的服务) bash
- docker-compose ps :列出docker-compose.yml中的所有容器
- restart
- 作用:用来重启项目中某个服务,如果不写服务id,默认重启所有服务
- docker-compose ps
- rm 指令
- 作用:用来删除项目服务
docker-compose rm [-fv] [服务id] 注意:谨慎操作 -v删除服务的数据卷
- 作用:用来删除项目服务
- start 指令 启动服务 docker-compose start [服务id]
- stop 指令 关闭服务 docker-compose stop [服务id]
- top [服务id] :用来查看compose内运行的进程
- pause/unpause [服务id] 停止/恢复某个容器
- logs [服务id] 查看日志