docker compose学习

下载docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

检测是否安装成功

docker-compose -v

创建第一个docker-compose程序

1.创建一个docker-compose.yml文件
touch docker-compose.yml
2.在配置文件中定义一个项目存在哪些服务
version: "3.0"
services:

  demo:
    build:  #启动服务时先将build命令中指定dockerfile打包成镜像,在运行该镜像
      context:demo   # 指定上下文目录dockerfile所在目录 ,把demo当做当前目录的上下文根目录,然后找寻dockerfile文件
      dockerfile: Dockerfile
    container_name: demo   #指定运行容器后的名称
    ports:
      - "8081:8081"
    networks:
      - hello
    depends_on:
      - tomcat    # 依赖于tomcat,必须等下面的tomcat起来后这个demo才能启动


  tomcat:  #服务名唯一
    container_name: tomcat01     #相当于run的 --name
    image: tomcat:8.0-jre8 #创建当前这个服务使用镜像是谁     相当于run的image
    ports:     #数组           相当于run的-p
      - 8080:8080   #映射端口
    volumes:   #完成宿主机与容器中目录数据卷共享      相当于run的-v
      # - /root/apps:/usr/local/tomcat/webapps    #使用自定义路径映射  两种方式
      - tomcatwebapps:/usr/local/tomcat/webapps    # 这个tomcatwebapps需要在声明一下
    networks:   #代表当前服务使用哪个网络桥      相当于run --network
      - hello


mysql:
  image: mysql:5.7.32
  container_name: mysql   #服务器启动之后容器名称, 相当于docker run之后的--name
  ports:
    - "3307:3306"
  volumes:
    - mysqldata:/var/lib/mysql
    - mysqlconf:/etc/mysql
  environment:   #下面env_file两个选一个使用,推荐使用下面的这样不容易暴露密码
    - MYSQL_ROOT_PASSWORD=root
  env_file:   #用来将environment环境中配置放入指定配置文件中
    - ./mysql.env    #需要创建mysql.env文件并将MYSQL_ROOT_PASSWORD=root放进去,上面的就不要写了
  networks:
    - hello
  
  
volumes:  #声明上面服务所使用的自动创建的卷名
    tomcatwebapps:   #声明指令的卷名  compose自动创建该卷名但是会在之前加入项目名
        external:   #使用自定义卷名
          true     #true代表确定使用指定卷名
    mysqldata:
    mysqlconf:


  # 可配置多个服务
  tomcat:  #服务名唯一
    image: tomcat:8.0-jre8 #创建当前这个服务使用镜像是谁
    ports:     #数组
      - 8081:8081   #映射端口
3.运行docker-compose
docker-compose up  #启动这个项目的所有服务  必须保证运行命令的目录存在docker-compose.yml


常用指令

up指令
作用:用来启动所有docker-compose服务
选项: -d 后台启动所有服务
down指令
作用:用来关闭所有docker-compose服务
exec指令
作用:进入容器
docker-compose exec redis(docker-compose.yml中声明服务id) bash
ps 指令
作用:用来展示当前docker-compose运行的所有容器
docker-compose ps
restart 指令
作用:用来重启项目中每个服务如果不写服务id 默认重启所有服务
docker-compose restart [服务id]
rm指令
作用:用来删除项目服务
docker-compose rm -fv [服务id] 注意:谨慎操作 -v删除服务的数据卷
start指令
启动服务 docker-compose start [服务id]
stop指令
关闭服务 docker-compose stop [服务id]
top指令
用来查看compose容器内运行的进程
docker-compose top
logs指令
展示某些容器的日志
docker-compose logs [服务id]

posted @ 2021-03-10 19:40  我在路上回头看  阅读(77)  评论(0编辑  收藏  举报