Docker使用Dockerfile来实现对现有镜像的修改来创建新的镜像, 那docker-compose则完成镜像的自动部署, 可以实现多个容器同时部署

Dockerfile可以让用户管理一个单独的应用容器;而Compose则运行用户在一个模板中定义一组相关联的容器(被成为一个project项目),

例如一个web服务器加上后端的数据库容器等

安装最新版本

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

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

YAML模板文件(关键字)

image

指定镜像名称或镜像ID,如果镜像不存在,尝试拉取镜像

build

指定Dockerfile所在文件夹路径,自动创建镜像并使用这个镜像

command

覆盖容器启动后默认执行的命令

links

连接到其他容器

external_links

连接到docker-compose.yml外部的容器,甚至非Compose管理的容器

ports

暴露端口信息并对外进行映射

expose

暴露端口,但不对外映射,只被连接links的服务访问

volumes

卷挂载设置

volumes_from

从另一个服务或容器挂载它的所有卷

environment

设置环境变量

env_file

从文件中读取环境变量

extends

基于已有的服务进行扩展(继承其他模板的配置)

net

设置网络模式

pid

跟主机系统共享进程命名空间

dns

配置dns服务器

cap_add, cap_drop

添加或放弃容器的Linux能力

dns_search

配置DNS搜索域

其他类似指令

其他的指令和docker run支持的选项类似

working_dir
entrypoint
user
hostname
domainname
mem_limit
privileged
restart
stdin_open
tty
cpu_shares

参考案例

docker-compose.yml模块

# docker-compose.yml 文件内容
version: ''
services:
redis:
image: ssh_img_b02:latest
container_name: redis_test_001
hostname: redis_test_001
restart: always
volumes:
- /root/redis/redisWork/:/redisWork
ports:
- "80:80"
- "220:22"
- "6379:6379"
expose:
- ""
- ""
- ""
#command: '/usr/bin/supervisord'
command: '/redisWork/usr/local/bin/redis-server /redisWork/etc/redis/6379.conf ' # 执行命令
# 如果不用-f参数指定文件,默认查找当前目录的docker-compose.yml文件
# up参数为创建并启动容器, -d表示后台运行, 如果已经存在容器,对比是否更新,如果更新了文件,自动更新文件并重启容器
# 其他参数操控官方 docker-compose -f docker-compose.yml up -d

Docker系列五: docker-compose部署Docker容器的更多相关文章

  1. Docker - 使用Swarm和compose部署服务(containers)

    前言 在之前使用Docker的过程中,一直是用 Docker run 命令单独启动container后再加入Overlay网络的方式实现部署工作的. 这种方式看似直接,但是随着服务所包含的contai ...

  2. Docker系列四: 使用UI管理docker容器

    一.什么是Portainer? Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容 ...

  3. Docker实战(五)之端口映射与容器互联

    除了网络访问外,Docker还提供了两个很方便的功能来满足服务访问的基本需求:一个是允许映射容器内应用的服务端口到本地宿主主机;另一个是互联机制实现多个容器间通过容器名来快速访问. 1.端口映射实现访 ...

  4. docker系列(三):docker容器

    1 引言 在前面博文中,我们介绍了镜像.如果说镜像犹如面向对象中的类,本节要说的容器就是由类实例化出来的对象了,有了类才可以创建容器. 先从拉取一个官方提供的ubuntu最新镜像: $ docker ...

  5. Docker系列08—搭建使用私有docker registry

    本文收录在容器技术学习系列文章总目录 1.了解Docker Registry 1.1 介绍 registry 用于保存docker 镜像,包括镜像的层次结构和元数据. 启动容器时,docker dae ...

  6. Docker系列教程01-Centos7安装新版Docker教程(10步)

    最近一直忙于开发,没有时间好好总结一下docker的知识.其实现在docker的教程已经很多很多了,但是很多系统的教程都是基于Ubuntu系统,因为官方推荐使用Ubuntu系统啊,原因在于Ubuntu ...

  7. 【Docker系列】:全面认识Docker和基本指令

    Docker逐渐成为虚拟化技术的佼佼者,Docker技术也是架构师的必备技能. 什么是Docker Docker 是一个开源的应用容器引擎,基于Go语言,诞生于2013年初,最初发起者是dotClou ...

  8. docker系列(一):docker基础与安装笔记

    1 什么是docker docker是基于GO语言编写的开源容器项目,诞生于2013年初,到目前为止,已经经历了6年的发展演变.现如今,docker已经非常火爆,特别是在一线IT企业,部署.运维等工作 ...

  9. docker 系列 - 基础镜像环境和Docker常用命令整理

    =======================docker 基础镜像环境 alpine=======================可以使用 docker search 命令搜索指定的 image, ...

随机推荐

  1. VC6.0 The value of ESP was not properly saved across a function call 错误解决方法

    调用DLL函数,出现错误 Run-Time Check Failure #0 - The value of ESP was not properly saved across a function c ...

  2. 大数据攻城狮之进阶技能-使用Git上传自己的项目至GitHub仓库

    在开始讲解之前我们默认已经存在仓库和安装Git,没有下载的可以去https://git-scm.com/ Git官方网站下载或者是私聊博主. 下面我们说一说Git的使用,比如说如何生成密钥,连接远程仓 ...

  3. VS2017中使用ReportViewer控件,vs2017找不到Microsoft Rdlc Report Designer for Visual Studio

    VS2017中没有ReportViewer控件,这个控件用来实现在项目中显示和打印关系数据库中的表比较容易,特别是想要打印的时候,这个比用DataGridView和PrintDocument要简单一些 ...

  4. 操作实践:Java桌面程序实现日志级别热修改

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 定位问题的时候往往需要动态修改日志级别并且不能影响业务的正常运行,也就是不能重启应用,此时就要使用到动态日 ...

  5. 2019年阿里java面试题

    一.JVM与性能优化 描述一下 JVM 加载 Class 文件的原理机制? 什么是类加载器? 类加载器有哪些? 什么是tomcat类加载机制? 类加载器双亲委派模型机制? Java 内存分配? Jav ...

  6. paddle(一)

    一.概述 一个机器学习的框架,提供了深度学习需要的神经网络,激活函数等主要功能. 基础概念 Program 一次模型训练就是一个program,通过执行器执行,默认环境下是执行fluid.defaul ...

  7. mui 上拉加载

    最近做到移动端页面的开发,需要mui 的上拉刷新功能,最后实现后整理代码如下: 1.需要引入的js <link href="../resource/css/mui.min.css&qu ...

  8. JavaScript—面向对象贪吃蛇_1

    前面说了.面向对象的思考方式和面向过程的思考方式有着本质的区别. 贪吃蛇.作为各大培训机构.面向对象的练手项目,的确好.我昨天看完视频,有一种领悟面向对象的感觉,当然可能只针对贪吃蛇..要想在实际开发 ...

  9. vue title悬停

    title 设置name="peo" title="" v-on:mouseenter="peoAndCarHover(item.signStatus ...

  10. uWSGI调整buffer-size

    https://uwsgi-docs.readthedocs.io/en/latest/Options.html#buffer-size buffer-size argument: required_ ...