SlideShare une entreprise Scribd logo
1  sur  22
Docker介绍及应用
施聪羽
edwardsbean@gmail.com
2014-05-24
 DevOps
 Docker简介
 Doker安装
 Demo:基本命令
 Demo:Flume部署
 坑
DevOps
Development & Operations
DevOps
 软件安装麻烦,系统环境不同,软件安装通过运维人员操作容易出现
问题,因为不提供ssh权限,导致调试不便。
 隔离性差,例如不同的开发人员如果在同一台主机环境下共享开发,
虽然是用户隔离,但端口如果不规范可能会冲突;同一个Mysql如果
权限管理不好很有可能误删别人的数据
 可移植性差,例如和生产环境不一致,开发人员之间也无法共享;更
严重的情况是当有新人入职时,通常需要又折腾一遍开发环境,无法
快速搭建
DevOps
Docker简介
Doker安装
Demo:基本命令
Demo:Flume部署
Docker简介
Docker是什么?
Docker是一个开源的容器引擎,它可以快速,简单的创建轻量级、便
携式的、自给自足的、环境隔离的container(容器)。一个容器在开
发者的笔记本上builds和test成功,那么这个容器就可以成功的批量
部署,运行在生产环境、VMs、OpenStack集群、公有云等
Docker简介
Docker和VM的区别?
Docker简介
 Docker基本概念:image和container
Docker简介
标准的配置方法
每个 LXC "容器" 之间或许不兼容,但是 docker 采用了一种标准的配
置方法使得由不同 docker 创建出的 LXC 能够完全兼容。
基于应用
LXC 的定位是作为一种虚拟机的替代方案。虽然所有的软件都可以安
装在由 LXC 或者 docker 管理的容器中,
但是 docker 更倾向于在一个容器中运行一个应用。
自动构建
Docker 的容器是根据 dockerfile 构建的,你可以在构建 image 的
过程根据需要中运行任何命令和程序。
这意味着你不用调整现有的 image 构建方式,如果你使用 puppet,
你可以在生成容器的时候执行 puppet 命令。
Docker简介
版本控制
Docker 实现了类似 git 的容器版本管理方法,并且能够进行增量更新。
组件复用
可以创建 base image 并将其保存在远程仓库 (repository) 中以便复
用,其他容器可以在其基础上进行修改并保存为新的 image。
生态系统
因为 docker 越来越流行,有大量的方法能够将其轻易地集成到开发过
程中,比如可以采用统一的方法来构造用于持续集成的环境和开发环
境的容器。
DevOps
Docker简介
Doker安装
Demo:基本命令
Demo:Flume部署
未来
Docker安装
Centos:
yum install docker-io
DevOps
Docker简介
Doker安装
Demo:基本命令
Demo:Flume部署
Demo:基本命令
搜索基本镜像(docker search):
拉取镜像(docker pull):
Demo:基本命令
运行容器(docker run):
安装软件(docker run):
Demo:基本命令
查看刚才的容器( docker ps -l ):
注意:每次运行命令,都是新增一个容器
提交我们真正的容器,生成新的image:
之后我们就可以用最新的镜像,运行已安装了ping命令的容器
DevOps
Docker简介
Doker安装
Demo:基本命令
Demo:Flume部署
Demo:Flume部署
Flume开发者
测试阶段:
 java
 centos6.5
 ssh(线上部署后有用)
Demo:Flume部署
Flume开发者
测试阶段:
 创建Dockerfile:
FROM 192.168.253.149:5000/centos6.5+ssh+java
ADD flume.tar.gz /opt/flume
 打包成Flume基本镜像,以供新人使用:
Docker build –t flume-base .
Demo:Flume部署
Flume开发者
测试阶段:
 创建Flume的拓扑配置文件:flume-example.conf
 编写Dockerfile用于创建运行的Flume镜像:
FROM flume-base
ADD flume-example.conf /opt/flume/conf/flume-example.conf
EXPOSE 4444 22
CMD run.sh
 创建镜像flume-1.0:
Docker build –t flume-1.0 .
Demo:Flume部署
 运维人员拉取镜像,并运行:
Docker pull 192.168.253.149:5000/flume-1.0
Docker run –p 444:4444 –p 222:22 –d 192.168.253.149:5000/flume-1.0
 如需更新配置,或者临时修改bug,运维人员只需重复上面buzhou
Flume运维人员
部署阶段:
坑
 Dockerfile中的EXPOSE、docker run --expose、docker run -p
之间的区别
Dockerfile的EXPOSE相当于docker run --expose,提供container
之间的端口访问。docker run -p允许container外部主机访问
container的端口
 Docker只允许运行一条CMD命令,而且有继承性。比如有个镜像
base,Dockerfile中CMD启动ssh服务。基于镜像base的新镜像
redis的Dockerfile CMD启动redis服务。那么ssh服务就不会启动
了。要启动多个服务,可以通过CMD supervisor
 Docker中好像不能创建用户。即使创建了用户,会有权限问题,比
如/etc/不能访问,
bash-4.1$ whoami
whoami: cannot find name for user ID 501
 任何commit都会将以前的CMD命令清除。如:进入container,修改
一个文件之后commit,生成的新镜像丢失原来的CMD命令

Contenu connexe

Similaire à Docker介绍及应用

docker intro
docker introdocker intro
docker intro
koji lin
 
Moodle 2.3 图文安装教程
Moodle 2.3 图文安装教程Moodle 2.3 图文安装教程
Moodle 2.3 图文安装教程
YUCHENG HU
 
[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例
YC Ling
 

Similaire à Docker介绍及应用 (20)

Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
VSCode Remote Development
VSCode Remote DevelopmentVSCode Remote Development
VSCode Remote Development
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 
Docker introduce and vs kernel virtual machine
Docker introduce and vs kernel virtual machineDocker introduce and vs kernel virtual machine
Docker introduce and vs kernel virtual machine
 
Docker+mesos安装最佳实践
Docker+mesos安装最佳实践Docker+mesos安装最佳实践
Docker+mesos安装最佳实践
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
 
DRBL-live-hadoop at TSLC
DRBL-live-hadoop at TSLCDRBL-live-hadoop at TSLC
DRBL-live-hadoop at TSLC
 
HDInsight for Microsoft Users
HDInsight for Microsoft UsersHDInsight for Microsoft Users
HDInsight for Microsoft Users
 
Docker應用
Docker應用Docker應用
Docker應用
 
docker intro
docker introdocker intro
docker intro
 
Moodle 2.3 图文安装教程
Moodle 2.3 图文安装教程Moodle 2.3 图文安装教程
Moodle 2.3 图文安装教程
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
 
Cloudstack dev/user sharing
Cloudstack dev/user sharingCloudstack dev/user sharing
Cloudstack dev/user sharing
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 

Docker介绍及应用