docker compose的简单使用

笔记内容:docker compose的简单使用
笔记日期:2018-02-08

  • 25.17 安装docker compose
  • 25.18 docker compose示例

安装docker compose

docker compose可以方便我们快捷高效地管理容器的启动、停止以及重启等操作,和批量管理容器,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像、数据卷、网络模式、监听端口等信息。我们可以在一个compose文件中定义一个多容器的应用(比如jumpserver),然后通过该compose来启动这个应用。

安装compose的方法如下,下载docker-compose然后放到/usr/local/bin/目录下,再更改一下权限即可:

[[email protected] ~]# curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[[email protected] ~]# chmod 755 !$  # 指定权限
chmod 755 /usr/local/bin/docker-compose
[[email protected] ~]# 

docker compose的安装就这么简单,安装完后,我们来查看一下版本信息:

[[email protected] ~]# docker-compose version
docker-compose version 1.17.0-rc1, build a0f95af
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016
[[email protected] ~]# 

说明:Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1没有声明版本默认是"version 1"。Version 1将来会被弃用。


docker compose示例

以上我们已经安装好了docker compose ,下面用一个简单的示例演示一下如何使用docker compose,编辑.yml文件,内容如下:

[[email protected] ~]# vim docker-compose.yml
version: "2"  # 使用Version 2
services:  # 包含需要操作的容器
  app1: # 容器的名称
    image: centos_nginx  # 指定基于哪个镜像
    ports:  # 指定映射的端口
      - "8080:80"
    networks:  # 指定使用哪个网络模式
      - "net1"
    volumes:  # 指定挂载的的目录
      - /data/:/data
  app2:
    image: test_centos
    networks:
      - "net2"
    volumes:
      - /data/:/data1
    entrypoint: tail -f /etc/passwd  # 这一句是为了让这个容器不会被关闭
networks:
  net1:
    driver: bridge
  net2:
    driver: bridge

编辑完之后就可以启动了:

[[email protected] ~]# docker-compose up -d  # -d是丢到后台运行
Creating network "root_net2" with driver "bridge"
Creating network "root_net1" with driver "bridge"
Creating root_app2_1 ...
Creating root_app1_1 ...
Creating root_app2_1
Creating root_app1_1 ... done
[[email protected] ~]# 

然后docker ps看一下是否已启动成功:

如果你没有加 entrypoint: tail -f /etc/passwd 这样的语句的话,那么app2被启动之后就会马上关闭了,所以加这一句没别的作用,就是为了不被马上关闭。不信的话,我现在删除掉那两个容器,然后再把 docker-compose.yml 文件里的那句命令给注释掉,再启动:

[[email protected] ~]# docker rm -f df21c6ec7
df21c6ec7
[[email protected] ~]# docker rm -f c2dda49
c2dda49
[[email protected] ~]# vim docker-compose.yml
[[email protected] ~]# docker-compose up -d
Creating root_app2_1 ...
Creating root_app1_1 ...
Creating root_app2_1
Creating root_app1_1 ... done
[[email protected] ~]# 

如上,可以看到,启动是成功的,但是我dicker ps -a查看却只有app1是在启动状态,而app2是在Exited状态:

所以要加上 entrypoint: tail -f /etc/passwd 的原因就在这,这个语句的唯一作用就是防止容器被关闭,这是docker的一个特性,说实话我也不知道为嘛要加这样的一句话,但是不加的话末尾启动的那个容器就会被关闭,不过不一定非要写 tail -f /etc/passwd ,也可以是其他可正常执行的命令。

docker-compose --help 可以查看该命令的文档,下面介绍几个常用的命令参数:

停止已有的容器:

[[email protected] ~]# docker-compose stop
Stopping root_app1_1 ... done
Stopping root_app2_1 ... done
[[email protected] ~]# 

启动已有的容器:

[[email protected] ~]# docker-compose start
Starting app2 ... done
Starting app1 ... done
[[email protected]r ~]# 

查看容器的状态:

[[email protected] ~]# docker-compose ps
   Name                  Command                State     Ports
---------------------------------------------------------------
root_app1_1   /bin/sh -c /usr/local/ngin ...   Exit 137
root_app2_1   tail -f /etc/passwd              Exit 137
[[email protected] ~]# 

删除容器:

[[email protected] ~]# docker-compose rm -f
Going to remove root_app1_1, root_app2_1
Removing root_app1_1 ... done
Removing root_app2_1 ... done
[[email protected] ~]# 

停止并删除运行中的容器:

[[email protected] ~]# docker-compose down
Stopping root_app1_1 ... done
Stopping root_app2_1 ... done
Removing root_app1_1 ... done
Removing root_app2_1 ... done
Removing network root_net2
Removing network root_net1
[[email protected] ~]# docker-compose ps
Name   Command   State   Ports
------------------------------
[[email protected] ~]# 

关于docker-compose语法的参考文档:

http://www.web3.xin/index/article/182.html

原文地址:http://blog.51cto.com/zero01/2070201

时间: 2024-10-09 16:45:00

docker compose的简单使用的相关文章

Docker Compose 创建yml 简单试例

Docker Compose 创建yml 简单试例 Docker Compose 文件使用格式版本需要与Docker版本对应可在官网内查找 查找地址:https://docs.docker.com/compose/compose-file/compose-file-v2/#compose-and-docker-compatibility-matrix 1.创建compose-test目录,进入目录再改目录下创建文件 mkdir compose-test;cd compose 2.创建构造文件 v

Docker Compose

compose项目简介 compose项目来源于之前的Fig项目,使用python代码编写.compose项目主要用于编排部署基于docker的应用.本身与docker/swarm配合度很高. Docker Compose 是 Docker 编排服务的一部分,可以让用户在其它平台快速安装Docker,Swarm 可以让 Docker 容器在集群中高效运转,而 Compose 可以让用户在集群中部署分布式应用.简单的说,Docker Compose 属于一个"应用层"的服务,用户可以定义

容器编排 Docker Compose

在我们启动容器的时候经常要使用docker run 指定很多参数,当我们需要管理很多容器时,使用这样的方式会给我们的运维人员带来很大的负担,docker compose容器编排工具无疑是解决这个一问题的利器. Docker Compose是用来管理多容器应用的工具,我们可以使用compose file 文件来配置容器的应用和服务,编写好compose file 文件以后,我们只需要使用一条简单的命令就可以创建并启动我们需要的应用. 使用compose一般有三个步骤:1.编写Dockerfile,

有容云:实战总结之 利用Docker、Docker Compose &Rancher构建持续部署

前言: 本文由John Patterson . Chris Lunsford写于2016年4月4日,译者有容云张向波,转载请注明出处.(原文链接见文末) 作者John Patterson和Chris Lunsford 运营了一家提供运营和基础架构服务的公司,本文是他们给大家分享的内容:关于如何通过使用Docker.Docker-Compose和Rancher来实现容器部署落地. 我们想跟你一起从头开始体验整个过程,特别是之间遇到的一些痛点和所做的决策.目前,已经有许多的资源和工具可以与Docke

Docker Compose 项目

http://hongge.blog.51cto.com/ compose项目简介 compose项目来源于之前的Fig项目,使用python代码编写.compose项目主要用于编排部署基于docker的应用.本身与docker/swarm配合度很高. Docker Compose 是 Docker 编排服务的一部分,可以让用户在其它平台快速安装Docker,Swarm 可以让 Docker 容器在集群中高效运转,而 Compose 可以让用户在集群中部署分布式应用.简单的说,Docker Co

Docker Compose—简化复杂容器应用的利器

Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compose # 当前最新的Docker是1.6.2,Compose为1.2.0 curl -s https://get.docker.io/ubuntu/ | sudo sh sudo apt-get update sudo apt-get install lxc-docker # 参考http://do

docker compose环境搭建

概述 Docker Compose提供一个简单的基于YAML配置语言,用于描述和组装多容器的分布式应用. 使用docker定义和运行复杂的应用,使用compose,可以在一个文件里,定义多容器的应用.只需要三步即可完成一个应用的创建. Dockerfile定义app的运行环境 docker-compose.yml定义组成app的services run docker-compose up 环境搭建 系统:ubuntu 14.04 curl -L https://github.com/docker

Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实比较无聊,请不要着急精彩马上开始,当大家对 docker 相关概念有所了解之后,后面我会结合 Spring Boot 给大家来一系列的小例子,会让大家感受到使用 Docker 就是这么爽! 今天给大家演出的导演是 Docker 家族的 docker-compare ,主演是 Spring Boot.

(十)Docker Compose安装与创建Flask web应用

Docker Compose 是 Docker 官方编排(Orchestration)项目之一, 负责快速在集群中部署分布式应用. Dockerfile 可以让用户管理一个单独的应用容器:而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个Web服务容器再加上后端的数据库服务容器等. 安装 该项目由 Python 编写,实际上调用了 Docker 提供的 API 来实现. 通过pip安装. $ python3 -m