Dock Compose安装和编排容器

时间:2020-06-30
本文章向大家介绍 Dock Compose安装和编排容器 ,主要包括 Dock Compose安装和编排容器 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一个项目经常会引用到很多附加的服务,比如:一个网站需要mysql数据库存储数据、redis做数据缓存、nginx反向代理等等。如果每次部署的时候都要一个个在docker中重新安装一遍这些东西就太麻烦了。所以我们就需要一个工具负责实现对Docker容器集群的快速编排。

Docker Compose 是一个用来定义和运行复杂应用的Docker工具,负责实现对 Docker 容器集群的快速编排 。
Docker Compose 中的两个重要概念:

  • 服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元。

一个项目可以由多个服务关联(容器)而成,并使用 docker-compose.yml 进行管理。

Docker Compose安装

//下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
//设置权限
sudo chmod +x /usr/local/bin/docker-compose
//查看版本
docker-compose --version

安装好之后我们就可以用 Docker Compose 进行容器编排

docker-compose.yml 配置文件

首先,我们创建一个docker-compose.yml文件。

version: "3"
 
services:
  webapp:
    image_name: webapp  
    container_name: coreapp
    build:
        context: .
        dockerfile: Dockerfile
    ports: 
        - "8002:80"
    depends_on:
      - db
  db:
    image: mysql:5.7
    container_name: mysql
    restart: always
    ports: 
        - "3306:3306"
    environment: 
        MYSQL_ROOT_PASSWORD: "yourmysqlpsw"
    volumes: 
        - "./conf:/etc/mysql/conf.d"
        - "./logs:/logs"
        - "./data:/var/lib/mysql"

version的具体版本问题可以看官网文档
看配置文件,我们可以知道这个项目一共包含了2个服务(webappmysql容器),分别是一个web网站和mysql数据库。web通过mysql容器对外暴露的数据库端口进行访问(也可以通过容器间的网络进行访问)。

webapp配置项

  • image_name: 指定构建image的名称
  • container_name: 指定创建容器的名称
  • build: 基于指定路径的 Dockerfile 构建镜像
//直接通过build指定路径,默认配置文件为Dockerfile
build: .

//通过context指定路径,通过dockerfile指定配置文件
build:
    context: .
    dockerfile: Dockerfile
  • ports: 端口映射指定服务器端口:容器内部端口
  • depends_on: 容器启动或停止时按顺序进行,参数为 service 名称

db配置项

  • restart: always 容器自动重启
  • image: 基于指定镜像(官方的 mysql:5.7 image)创建容器,如果镜像不存在,Compose 会自动拉取镜像
  • volumes: 指定创建容器时文件卷映射路径
  • environment: 设置创建容器时的参数

docker-compose.yml文件放到之前的web项目目录下,在++当前目录++启动项目。

cd www //进入项目目录 
docker-compose up -d // 后台运行容器
docker-compose ps    // 查看运行中容器
docker-compose stop  // 停止容器

这里可以看出设置depends_on在启动和关闭容器时的效果,

Docker Compose 常用命令

命令 说明
docker-compose build 构建项目中的镜像,--force-rm:删除构建过程中的临时容器;--no-cache:不使用缓存构建;--pull:获取最新版本的镜像
docker-compose up -d 构建镜像、创建服务和启动项目,-d表示后台运行
docker-compose run ubuntu ls -d 指定服务上运行一个命令,-d表示后台运行
docker-compose logs 查看服务容器输出日志
docker-compose ps 列出项目中所有的容器
docker-compose pause [service_name] 暂停一个服务容器
docker-compose unpause [service_name] 恢复已暂停的一个服务容器
docker-compose restart 重启项目中的所有服务容器(也可以指定具体的服务)
docker-compose stop 停止运行项目中的所有服务容器(也可以指定具体的服务)
docker-compose start 启动已经停止项目中的所有服务容器(也可以指定具体的服务)
docker-compose rm 删除项目中的所有服务容器(也可以指定具体的服务),-f:强制删除(包含运行的)
docker-compose kill 强制停止项目中的所有服务容器(也可以指定具体的服务)

目前web项目连接mysql是通过服务器端口进行访问的,其实还可以通过docker-compose.yml指定容器间的网络模式,直接访问容器暴露的端口(使用expose只将端口暴露给连接的服务,而不暴露给主机)。当然相应的数据库连接语句也需要修改了。留个坑,下次再填吧~

参考资料:

原文地址:https://www.cnblogs.com/cplemom/p/13213558.html