Docker Compose部署及基础使用详解

一 Docker Compose概述

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服务。

Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程。

使用Compose基本上是一个三步过程:

  1. 在Dockerfile中定义您的应用程序环境,以便可以在任何地方进行再生产。
  2. 定义构成应用程序的服务,docker-compose.yml 以便它们可以在隔离环境中一起运行。
  3. 运行docker-compose up和Compose start并运行整个应用程序。

一个docker-compose.yml格式示例如下::

version: '3'
services:
 web:
  build: .
  ports:
  - "5000:5000"
  volumes:
  - .:/code
  - logvolume01:/var/log
  links:
  - redis
 redis:
  image: redis
volumes:
 logvolume01: {}

Compose具有管理应用程序整个生命周期的命令:

  • 启动,停止和重建服务
  • 查看正在运行的服务的状态
  • 流式传输运行服务的日志输出
  • 在服务上运行一次性命令

二 Docker Compose安装

2.1 二进制下载安装

 root@docker01:~# sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
root@docker01:~# sudo chmod +x /usr/local/bin/docker-compose

2.2 pip安装(推荐)

root@docker01:~# apt-get -y install python
root@docker01:~# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
root@docker01:~# python get-pip.py  #安装PIP
root@docker01:~# pip install docker-compose #安装docker compose
 root@docker01:~# docker-compose version #验证安装

三 Docker Compose示例

3.1 构建应用程序

root@docker01:~# mkdir composetest  #创建Docker Compose目录
root@docker01:~# cd composetest/
root@docker01:~/composetest# vi app.py

提示:使用Python构建一个简单应用,具体应用内容参考官方示例即可。
https://docs.docker.com/compose/gettingstarted/#step-1-setup

3.2 创建Dockerfile

root@docker01:~/composetest# vi Dockerfile #使用Dockerfile构建镜像
FROM python:3.4-alpine
RUN mkdir /root/.pip  #创建pip源配置目录
ADD pip.conf /root/.pip/pip.conf  #将国内pip源添加至需要构建的镜像中
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt  #根据文件列表使用pip安装
CMD ["python", "app.py"]

提示:以上Dockerfile相关命令参考《004.docker镜像管理》。

root@docker01:~/composetest# vi requirements.txt #创建安装软件列表文件
flask
redis
root@docker01:~/composetest# vi pip.conf #创建基于国内pip源的文件
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

Dockerfile解释:

  1. 从Python 3.4映像开始构建映像。
  2. 创建pip配置目录。
  3. 将国内pip源配置文件添加到/root/.pip/映像中的路径中。
  4. 将当前目录添加.到/code映像中的路径中。
  5. 将工作目录设置为/code。
  6. 安装Python相关包。
  7. 将容器的默认命令设置为python app.py。

3.3 使用Docker Compose构建服务

root@docker01:~/composetest# vi docker-compose.yml
version: '3'
services:
 web:
  build: .
  ports:
   - "5000:5000"
 redis:
  image: "redis:alpine"

Docker Compose解释:

此Compose文件定义了两个服务,web和redis。

web服务:

  • 使用从Dockerfile当前目录中构建的图像。
  • 将容器上的公开端口5000转发到主机上的端口5000。即使用Flask Web服务器的默认端口5000。

redis服务:

使用从Docker Hub拉取的公共Redis映像。

root@docker01:~/composetest# docker-compose up -d #开始构建

四 验证确认

浏览器访问:http://172.24.8.111:5000/

root@docker01:~/composetest# docker-compose ps
root@docker01:~/composetest# docker ps

 root@docker01:~/composetest# docker image ls

提示:

使用Docker Compose构建的容器名称规则为:【构建时所在目录】_【yml构建文件定义服务名】_【容器启动序号】。
使用Docker Compose构建的镜像名称规则为:【构建时所在目录】_【yml构建文件定义服务名】,其tag为latest。

五 挂载卷构建

root@docker01:~/composetest# vi docker-compose.yml
version: '3'
services:
 web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
 redis:
  image: "redis:alpine"
root@docker01:~/composetest# docker-compose up -d #再次构建
root@docker01:~/composetest# vi app.py
……
return 'Hello Docker! I have been seen {} times.\n'.format(count)
……

浏览器访问:http://172.24.8.111:5000/

提示:挂载本地卷至容器后,可快速修改本地文件,从而达到动态修改容器而无需重建image作用。

六 Docker Compose其他常用命令

docker-compose up -d:在后台运行服务;
docker-compose ps:查看当前正在运行的容器;
docker-compose run:运行一次性命令,如docker-compose run web env。

docker-compose stop:停止服务,如docker-compose stop web

提示:docker-compose以yaml中服务名作为参数,而非容器名称或ID。

docker-compose down --volumes:完全删除容器同时删除容器使用的数据卷。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Docker-compose部署gitlab的方法步骤

    Docker-compose部署gitlab 1.安装Docker 安装必要工具 复制代码 代码如下: [root@vm_10_14_centos ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 添加Docker-ce镜像源并安装 [root@vm_10_14_centos ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/li

  • 浅析docker-compose部署mysql无法访问的问题

    什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高.Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器. Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用

  • linux使用docker-compose部署软件配置详解

    前言 本篇将分享一些 docker-compose 的配置,可参考其总结自己的一套基于docker的开发/生产环境配置.下面话不多说了,来一起看看详细的介绍吧 安装docker及docker-compose install docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun install docker-compose sudo curl -L https://github.com/docker/co

  • Docker Compose部署及基础使用详解

    一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配置中创建并启动所有服务. Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程. 使用Compose基本上是一个三步过程: 在Dockerfile中定义您的应用程序环境,以便可以在任何地方进行再生产. 定义构成应用程序的服务,docker-compose.yml 以便它们可以在隔离环

  • Docker Compose搭建Wordpress服务实现详解

    目录 前言 编写docker-compose.yaml 注意点 前言 最近在研究wordpress独立建站,在项目部署的时候也踩了一些坑,为了避免再次踩坑,特此通过此文章记录一下. 编写docker-compose.yaml 此次建站采用的是docker compose的方式来部署wordpress项目,我们可以进入DockerHub官网找到wordpress镜像: 根据官方文档提供的信息,最终我们可以编写出如下docker-compose.yaml: version: "3.1" s

  • 最新IDEA快速实现Docker镜像部署运行的过程详解

    背景 使用idea配合docker,实现从javaweb开发,部署,运行全过程. 环境:已经配置好的docker.已经安装好的mysql8容器.一个springBoot 框架的web项目(内含swagger,便于测时) 开启Docker的远程连接 网上的方法找不到对应的docker.service文件,可能版本或者安装方式不同. 通过 systemctl status docker 查找docker.service文件位置: 修改/etc/systemd/system/docker.servic

  • Docker基础命令详解

    docker基本概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上. Docker是一个重新定义了程序开发测试.交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是docker提出的"Build once,Run anywhere" 创建镜像 创建镜像的方法有三种: 基于已有的容器创建 基于本地模板导入 基于dockerfile 基于已有的容器创建 主要使用docker

  • Docker守护进程安全配置项目详解

    本文将为大家介绍docker守护进程的相关安全配置项目. 一.测试环境 1.1 安装 CentOS 7 CentOS Linux release 7.7.1908 (Core) 升级内核,重启 # yum update kernel [root@localhost docker]# uname -a Linux localhost 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64 x86_64 x86_64

  • Docker 7 docker在阿里云的使用详解

    在传统模式中,开发团队在开发环境中完成软件开发,自己做了一遍单元测试, 测试通过,ᨀ交到代码版本管理库.运维把应用部署到测 试环境, QA 进行测试,没问题后通知部署人员发布到生产环境. 在上述过程中涉及到至少三个环境:开发.测试和生产.现实情况是,开发自测 没问题,但到了测试或者生产环境程序无法运行,让开发团队排查,经过长时间 排查最后发现是测试环境的一个第三方库过时了.这样的现象在软件开发中很普 遍,已经不适用如今的快速开发和部署.docker可以满足你的需求. 阿里云容器hub开发者平台,

  • Docker run 命令的使用方法详解

    注意,本文基于最新的Docker 1.4文档翻译. Docker会在隔离的容器中运行进程.当运行 docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统.网络资源和以此进程为根进程的进程组.在容器启动时,镜像可能已经定义了要运行的二进制文件.暴露的网络端口等,但是用户可以通过docker run命令重新定义(译者注:docker run可以控制一个容器运行时的行为,它可以覆盖docker build在构建镜像时的一些默认配置),这也是为什么run命令相比于其它命

  • Docker Secret的管理和使用详解

    一.什么是Docker Secret (一)情景展现 我们知道有的service是需要设置密码的,比如mysql服务是需要设置密码的: version: '3' services: web: image: wordpress ports: - 8080:80 volumes: - ./www:/var/www/html environment: WORDPRESS_DB_NAME=wordpress WORDPRESS_DB_HOST: mysql WORDPRESS_DB_PASSWORD:

  • 基于docker 搭建Prometheus+Grafana的过程详解

    一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作.Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus.现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控. Prometheus基本原理是通过HTT

  • docker容器的几种存储详解

    目录 写在前面 几种存储挂载方式 1.bind mounts 2.volumes 3.tmpfs mount 存储数据共享 写在前面 我们在上篇学习了容器网络,对容器网络驱动bridge工作原理做了较为详细的介绍,今天小作文一起看看容器中另一个关键域-存储. 容器的存储可以分为两大类: 一种是与镜像相关的即我们在<docker容器技术基础之联合文件系统OverlayFS>一文提到的容器层Copy-On-Write特性.默认情况下,在容器内创建的所有文件都存储在可写容器层上,这种直接将文件存储在

随机推荐