Docker系列五: docker-compose部署Docker容器
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容器的更多相关文章
- Docker - 使用Swarm和compose部署服务(containers)
前言 在之前使用Docker的过程中,一直是用 Docker run 命令单独启动container后再加入Overlay网络的方式实现部署工作的. 这种方式看似直接,但是随着服务所包含的contai ...
- Docker系列四: 使用UI管理docker容器
一.什么是Portainer? Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容 ...
- Docker实战(五)之端口映射与容器互联
除了网络访问外,Docker还提供了两个很方便的功能来满足服务访问的基本需求:一个是允许映射容器内应用的服务端口到本地宿主主机;另一个是互联机制实现多个容器间通过容器名来快速访问. 1.端口映射实现访 ...
- docker系列(三):docker容器
1 引言 在前面博文中,我们介绍了镜像.如果说镜像犹如面向对象中的类,本节要说的容器就是由类实例化出来的对象了,有了类才可以创建容器. 先从拉取一个官方提供的ubuntu最新镜像: $ docker ...
- Docker系列08—搭建使用私有docker registry
本文收录在容器技术学习系列文章总目录 1.了解Docker Registry 1.1 介绍 registry 用于保存docker 镜像,包括镜像的层次结构和元数据. 启动容器时,docker dae ...
- Docker系列教程01-Centos7安装新版Docker教程(10步)
最近一直忙于开发,没有时间好好总结一下docker的知识.其实现在docker的教程已经很多很多了,但是很多系统的教程都是基于Ubuntu系统,因为官方推荐使用Ubuntu系统啊,原因在于Ubuntu ...
- 【Docker系列】:全面认识Docker和基本指令
Docker逐渐成为虚拟化技术的佼佼者,Docker技术也是架构师的必备技能. 什么是Docker Docker 是一个开源的应用容器引擎,基于Go语言,诞生于2013年初,最初发起者是dotClou ...
- docker系列(一):docker基础与安装笔记
1 什么是docker docker是基于GO语言编写的开源容器项目,诞生于2013年初,到目前为止,已经经历了6年的发展演变.现如今,docker已经非常火爆,特别是在一线IT企业,部署.运维等工作 ...
- docker 系列 - 基础镜像环境和Docker常用命令整理
=======================docker 基础镜像环境 alpine=======================可以使用 docker search 命令搜索指定的 image, ...
随机推荐
- POJ - 1742 Coins(dp---多重背包)
题意:给定n种硬币的价值和数量,问能组成1~m中多少种面值. 分析: 1.dp[j]表示当前用了前i种硬币的情况下,可以组成面值j. 2.eg: 3 10 1 3 4 2 3 1 (1)使用第1种硬币 ...
- 2pc和3pc区别
2pc和3pc区别 3pc背景: 2pc协议在协调者和执行者同时宕机时(协调者和执行者不同时宕机时,都能确定事务状态),选出协调者之后 无法确定事务状态,会等待宕机者恢复才会继续执行(无法利用定 ...
- salt如何查看文档帮助
1.查看普通模块和函数使用方法 salt 'minion' sys.doc module_name salt ‘minion' sys.doc module_name.function_name ...
- VC++ DLL 2 静态链接库
这一篇以VS2013为例子介绍怎样编写一个静态链接库和调用. 1.打开VS2013,新建Visual C++ 的win32项目: 新建后工程分支如下: 添加头文件和源文件: 编写头文件和源文件内容: ...
- java笔记5
1. JUnit 单元测试:方法名任意,但是没有参数列表. 注解: @Test @Ignore @Before @After 2. 泛型 1. 在集合中使用泛型 2. 在通用性较高的代码中使用泛型 1 ...
- 应用层上的协议HTTP
HTTP http://www.runoob.com/http/http-tutorial.html https://www.cnblogs.com/houfee/articles/9161847.h ...
- 图解kubernetes容器状态同步机制核心实现
在K8s中将Pod调度到某一台Node节点之后,后续的状态维护信息则是由对应机器上的kubelet进行维护,如何实时反馈本地运行状态,并通知apiserver则是设计的难点, 本节主要是通过感知Pod ...
- 【转帖】使用了 Service Mesh 后我还需要 API 网关吗?
使用了 Service Mesh 后我还需要 API 网关吗? https://www.kubernetes.org.cn/6762.html api gateway和istio 是不一样的 追求不一 ...
- android 根据距离区分 点击跟滑动事件
public void onClick(View v) { if (isclick) Log.i(TAG, "onclick"); } }); } float distance = ...
- zip4j 2.0压缩 加密压缩
https://github.com/srikanth-lingala/zip4j ZipParameters zipParameters = new ZipParameters(); zipPara ...