基础 -- Linux(七)DockerCompose

简介


Docker ComposeDocker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。

通过第一部分中的介绍,我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

DockerCompose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目。

安装


下载docker-compose/usr/local/bin、并改名为docker-compose

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose  

使用可能会遇到执行权限的问题,赋予可执行权限

chmod +x /usr/local/bin/docker-compose

关于docker-compose 下载问题,可以去github上下载(下载地址),这里可能需要借助一些科学的上网手法,下载对应的版本后上传到我们的服务器,放在/usr/local/bin/目录下并进行授权既可以正常使用了。

DockerCompose 的基本使用


使用DockerCompose 启动 tomcat,编写docker-compose.yml

cd /usr/local
mkdir docker
cd docker 
mkdir tomcat
cd tomcat 
vi docker-compose.yml

docker-compose.yml 注意不能使用制表符,必须使用空格

version: '3'					## docker-compose 配置语言的版本
services:						## 服务
  tomcat:						## 容器
    restart: always				## 自动重启
    image: tomcat				## 镜像
    container_name: tomcat		## 容器名
    ports:						## 端口
      - 8080:8080

守护态启动(后台)

docker-compose up -d

关闭该容器

docker-compose down

例子


docker-compose (mysql)

version: '3.1'
services:
  mysql:
    restart: always
    image: mysql:5.7.22
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

Docker管理的数据卷会放在 /var/lib/docker/volumes

总结


Docker已经很方便了,那能不能再方便一点呢?我们连docker pull这样的命令都不想写,能不能直接上一个文件就能帮我自动下载镜像,启动镜像,宿主机重启的时候也帮我把Docker重启呢?
DockerCompose就出现了,只要我们写好了docker-compose.yml,只需要docker-compose up -d 。这样我们docker run的参数就可以直接写在文件上。

发布了27 篇原创文章 · 获赞 4 · 访问量 919

猜你喜欢

转载自blog.csdn.net/weixin_42126468/article/details/103481184