docker进阶-初探Docker-compose
什么是Docker-compose
compose 翻译成中文的意思是"构成"和"组成"的意思。Docker我之前把他比作一个大轮船,这个轮船上面可以放很多很多的箱子。这个箱子我们可以看做是一个个的容器(container)。那么Docker-compose可以看到是就是把一个个箱子组合在一起成为一个大整体的意思。可以统一卸货,上货。放在我们的应用中就是可以通过Docker-compose管理我们容器(container)。这里只是一个通俗的比喻。理论至少可以参考Docker-compose官方文档 。
为什么要用Docker-compose
docker-compose 是一个用来把 docker 自动化的东西,有了 docker-compose 你可以把所有繁复的 docker 操作简化成一条命令,自动化的完成。他有以下几个特点:
- "一键"启动,停止和重建服务
- 可以查看运行服务的状态
- 实时的日志输出
使用docker-compose可以大大减少docker的部署时间。减少加班。比较有时间可以多多陪陪家人。
Docker-compose安装和使用
安装
要想安装和使用Docker-compose必须保证当前本机的docker的版本大于1.3。首先检查当前当前本机docke版本和检查有没有安装Docker-compose:
#检查docker版本
sudo docker -v
#检查Docker-compose的版本。
sudo docker-compose -v
#安装Docker-compose命令。安装完成之后再次使用上面命令检查版本。
https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#如果提示Permission denied。执行以下语句赋权
sudo chmod +x /usr/local/bin/docker-compose
Docker-compose常用命令
#以下所有命令需要和d.yml在同一目录。也可以通过 -f 执行.yml文件
#查看当前容器运行的状态。显示容器名称|执行脚本|当前运行状态|当前监听端口信息。 指定.yml文件用法 sudo docker-compose -f ./docker-compose.yml ps
sudo docker-compose ps
#重启或者重启某个服务 sudo docker-compose restart ||sudo docker-compose xxxx
sudo docker-compose restart
#构建服务
sudo docker-compose build
#显示日志
sudo docker-compose logs
#-d表示后台。up命令会构建,(重新)创建,启动,链接一个服务相关的容器。默认情况下如果容器已经存在,将会停止并尝试重新创建他们。并使用之前挂载的卷。
# --no-recreate参数可以让容器不被停止或者重新创建
sudo docker-compose up -d
#stop和start停止当前运行的某个容器
sudo docker-compose stop xxxx
sudo docker-compose start xxxx
#停止所有容器,并删除容器
docker-compose down
编写.yml文件
docker-compose的配置文件是以.yml为后缀的。一般文件名默认为docker-compose.yml。当然也可以自己定义。首先我们需要创建一个.yml文件,我这里还是以前docke入门那个images为例。这里推荐一个插件。如何你用的是vscode的话,可以试试。地址 他可以很方便的帮我们编写Dockerfile和docker-compose.yml文件。
mkdir docker-compose
cd docker-compose
touch docker-compose.yml
vi docker-compose.yml
然后写入以下内容。
version: '2.1'
services:
docker_demo:
image: docker_demo
build: .
environment:
NODE_ENV: production
ports:
- 8000:3000
保存完成之后。在当前目录下面运行
#启动命令
robin:docker-compose robin$ sudo docker-compose up -d
Recreating dockercompose_docker_demo_1 ... done
#查看当前容器运行状态
robin:docker-compose robin$ sudo docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------
dockercompose_docker_demo_1 /bin/sh -c npm start Up 0.0.0.0:9000->3000/tcp
robin:docker-compose robin$
#显示logs
robin:docker-compose robin$ sudo docker-compose logs
Attaching to dockercompose_docker_demo_1
docker_demo_1 |
docker_demo_1 | > docker_demo@0.1.0 start /usr/src/app
docker_demo_1 | > node server.js
docker_demo_1 |
robin:docker-compose robin$
然后带来浏览器输入http://localhost:9000 就可以看到我们熟悉的"Hello docker"。
docker-compose.yml文件结构参考
#版本
version: '2.1'
#服务部门
services:
#服务名称
docker_demo:
#镜像名称或者images id 。如果本地不存在自己会下载
image: docker_demo
#使用up命令启动时会执行构建任务。可以指向 Dockerfile 文件。
build: .
#环境变量
environment:
NODE_ENV: production
#监听端口。对外暴露端口:容器内端口
ports:
- 8000:3000
以上这个.yml的执行的结果和我们之前使用 docker run -d -p 9000:3000 docker_demo
的效果一致。上面的docker-compose.yml比较简单。也没有用到volumes。只是用来入门。下篇会继续详细讲解docker-compose。
docker进阶-初探Docker-compose的更多相关文章
- Docker:四、Docker进阶 Windows Docker IIS 部署
前面的三篇docker 文档大家看的肯定不过瘾,自己可能也已经上手一试了...不知道有没有发现问题... 哈哈... 我来说说我遇到的问题哦 一.windows docker 镜像越来越大 默认的do ...
- Docker进阶之三:Docker应用场景
场景一:节省项目环境部署时间 1.单项目打包 每次部署项目到测试.生产等环境,都要部署一大堆依赖的软件.工具,而且部署期间出现问题几率很大,不经意就花费了很长时间. Docker主要理念就是环境打包部 ...
- Docker进阶之一:Docker介绍与体系结构
一. Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源,基于Linux内核的cgroup,namespace,Union FS 等技术, ...
- 【云计算】Docker云平台—Docker进阶
Docker云平台系列共三讲,此为第二讲:Docker进阶 参考资料: 五个Docker监控工具的对比:http://www.open-open.com/lib/view/open1433897177 ...
- docker进阶之路-基础篇 | 一:环境搭建
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061747.html 一.准备工作 查看内核 Docker 要求 CentOS ...
- docker进阶-搭建私有企业级镜像仓库Harbor
为什么要搭建私有镜像仓库 对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像.既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像.我们 ...
- Docker(四):Docker 三剑客之 Docker Compose
前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...
- Docker 核心技术之Docker Compose
Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ...
- Docker三剑客之Docker Compose
一.什么是Docker Compose Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/comp ...
随机推荐
- 使用tcp+select实现客户端与客户端的通信
使用多路复用实现客户端与客户端进行通信: 原理:客户端只要一连上服务器,立马给服务器发送用户名,然后在服务端将newsocketfd存放在同一个结构体中,客户端先给服务器发送数据,然后通过服务器转发给 ...
- 11个phpstorm 快捷键介绍
11个phpstorm 快捷键介绍 http://phpstorm.tips/tips/11-toggling-case
- php+redis 学习 四 队列
<?php /** * redis实战 * * 利用列表list实现简单队列 * * @example php cache.php */ header('content-type:text/ht ...
- WPF DataTriger 用法示例代码
用法1: <DataGridTemplateColumn Header="{lex:LocText ExamineRoom}"> <DataGridTemplat ...
- 高可用的MongoDB集群
1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l 面向集合的存储:适合存储对象及JSON形式的数据. l ...
- C/C++语言简介之运算符
比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移.例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 0 ...
- 分享一个集成在项目中的REST APIs文档框架swagger
1 为什么是使用swagger? 1-1 当后台开发人员开发好接口,是不是还要重新书写一份接口文档提给前端人员,当然对于程序员最不喜欢的就是书写文档(当然文档是必须的,有利于项目的维护) 1-2 当后 ...
- 码农很忙代理IP系统V1.0版本上线
码农很忙代理IP系统V1.0版本上线 经过为期一个月的重写和测试,新版本的码农很忙代理IP系统已于今日正式上线.新版本拥有更精准的匿名类型识别和更高效的验证调度算法. 新版本仍旧采用ASP.NET B ...
- 终极解决方案:java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
报错信息 javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificates does ...
- html5版 音乐播放器
html5版本音乐播放器,支持iOS设备,案例地址:http://www.xttblog.com/?p=1277 功能说明 支持iOS设备,但是iOS不支持自动下一曲,这是iOS本身限制,支持touc ...