2-compose命令和yaml模板
一 compose命令和模板说明
A. compse命令列表说明
每个命令后后还有很多参数,具体的请用--help去查看
命令名
参数说明
build
构建项目中的服务容器
images
列出所有镜像
kill
通过发送SIGKILL信号来强制停止服务容器
logs
查看服务器容器的输出
pause
暂停一个服务容器
port
打印某个容器的端口所映射的公共端口
ps
列出项目中目前的所有容器
pull
拉取服务依赖的镜像
push
推送服务依赖的镜像
restart
重启项目中的服务
rm
删除所有的服务器容器(停止状态的)
run
在指定服务上执行一个命令
scale
设置指定服务运行的容器个数
start
启动已经存在的服务容器
stop
停止已经处于运行状态的容器,但不删除它
top
展示运行的进程
unpause
恢复处于暂停状态中的服务
up
自动完成包括构建镜像、创建服务、启动服务并关联服务相关容器的一系列操作
B. Compose模板文件的说明
compose模板文件官方文档
co ...
1-docker-compose快速入门
一 docker-compose的简介
docker-compose是dokcer官方的单机编排工具,让用户通过编写一个简单的模板文件,快速地创建和管理基于docker容器的应用集群。实现对docker容器集群的快速编排。
允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器作为一个项目(project)
A. Compose2个重要概念:
服务(service)
一个应用的容器,实际上可以包含若干运行相同镜像的容器实例。
项目(project)
由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。
B. 使用Compose的三步骤:
Dockerfile 定义应用的运行环境
docker-compose.yml 定义组成应用的各服务
docker-compose up 启动整个应用
C. docker-compose命令与模板文件
docker-compose命令
对于Compose来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或容器。默认针对项目
1234 ...
7-docker容器的网络通信
一 容器网络的类型
Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,多host网络又分为原生网络和第三方网络,如下:
原生单机网络
None:不为容器配置任何网络功能,–net=none
Host:与主机共享Network Namespace,–net=host
Container:与另一个运行中的容器共享网络名称空间,–net=container:ID
Bridge:Docker设计的,默认的NAT网络模型,–net=bridge
原生多机网络
overlay:基于vxlan的隧道网络
macvlan:基于网卡虚拟化的大局域网
第三方多机网络[本章不讨论]
flannel
weave
calico
原生网络和单机网络都是通过不同的driver来实现的,未来可能还会有更多的开源driver
二 原生单机网络
docker安装好后,默认会创建三个网络,分别是none,host和bridge,用docker network ls命令查看如下
12345[root@docker01 ~]# docker network ls ...
6-docker镜像仓库和标签tag
一 docker仓库和镜像tag
A. docker仓库分类
docker镜像是需要放到一个统一的仓库的,以便不同的主机可以下载和使用相同的镜像而不必每次都用dockerfile自己做,docker镜像仓库按如下方式划分
公共仓库
官方公共仓库
docker hub
第三方公共仓库
阿里云
七牛云
DaoCloud
时速云
私有仓库
官方命令行仓库:registry
第三方web仓库:harbor
B. docker镜像tag命名规范
在基础知识部分,介绍了标准镜像名由四部分组成: 仓库地址/项目名/镜像名:标签,如 daocloud.io/library/nginx:latest
一个高效的版本命名方案可以让用户清楚地知道当前使用的是哪个镜像,同时还可以保持足够的灵活性。
每个镜像可以有多个 tag,而多个 tag 可能对应的是同一个镜像。下面介绍 Docker 社区普遍使用的 tag 方案。
初始版本v1.9.1
镜像名为myimage,当前需要的版本为 v1.9.1。那么可以给镜像打上四个 tag:1、1.9、1.9.1和 latest。
1234 ...
5-docker镜像构建
一 docker镜像构建说明
A. 两种构建方式
手动构建docker镜像
自动构建docker镜像[dockerfile]
B. 构建步骤
手工构建步骤
启动容器安装软件服务
将安装好服务的容器commit提交为镜像
启动新容器来测试新提交的镜像
自动构建步骤
编写dockerfile文件
通过build命令使用该dockerfile构建镜像
启动新容器来测试新提交的镜像
C. dockerfile命令集
指令
功能
特殊说明
FROM
指定基础镜像
必须有
MAINTAINER
指定维护者信息
可以没有
ENV
设置环境变量
可被后面的指令使用
COPY
复制文件到容器
ADD
复制文件到容器
压缩文件会自动解压
WORKDIR
设置当前工作目录
类似linux的cd命令
VOLUME
设置卷,挂载主机目录
需’-v’配合
EXPOSE
指定对外的端口
默认不暴露,需"-P"配合
RUN
运行指定的命令
在用于容器创建过程中执行命令
CMD
容器启动后执行的命令
容易被替换
ENTRYP ...
4-数据的持久化和共享互连
一 容器数据持久化和共享方案
A.为什么要使用docker数据持久化
正常情况下,删除容器,容器中所有的文件也会被删除。所以需要能持久化容器中数据的方法,也就是数据卷
数据卷(Data Volume)的作用:
持久化容器运行过程中产生的数据文件
实现多个容器间的文件共享。
实现多个主机间有状态容器的迁移
B.docker数据卷的分类
在集群环境下,数据卷分为:
单机内容器间的数据持久化和共享
数据卷[Data Volume]
绑定挂载[bind mount]
容器管理卷[docker managed volume]
容器卷[volume container]
跨主机容器间的数据持久化和共享
使用分布式文件系统(如NFS)
使用volume driver实现跨主机存储
Rex-Ray插件
更多官方插件
C.容器间互连的方式
容器互联大体有以下三种方式:
基于volume的互联
基于link的互联
基于网络的互联
其中基于网络的互连会在网络部分单独写,基于volume的互连和基于link的互连会在本节详细说明
二 数据卷的使用详情
数据卷[Data ...
3-docker基础操作命令
一 命令格式
docker的命令分老版命令格式和新版命令格式,新版命令主要是更直观了,添加了镜像[image]和容器[container]来区分命令,简单举例对比:
1.显示容器命令
老版命令:docker ps
新版命令:docker container ls
2.显示镜像命令
老版命令: docker images
新版命令: docker image ls
3.删除镜像命令
老版命令: docker rmi centos:latest
新版命令: docker image rm centos:latest
二 镜像相关命令
1.搜索镜像:
docker search xxx
选镜像的建议:优先考虑官方镜像,然后是starts数量多的镜像
2.拉取/推送镜像:
1.拉取镜像到本地
docker image pull centos
2.推送centos镜像到仓库
docker image push centos
3. 镜像加速器
在/etc/docker/daemon.json文件中写上仓库和地址,详见docker部署章节
4. 查看/删除镜像
1.查看镜像
docker image ...
2-docker软件部署
一 环境规划
内核版本必须3.8以上,所以我们之间使用centos7.4
主机名
IP地址
操作系统
内存
docker版本
docker01
10.0.0.11
centos7.4
4G
1.83
docker02
10.0.0.12
centos7.4
4G
1.83
二 docker部署
1. 添加yum源
12curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum clean all
2. 安装docker
1yum install -y docker-ce
3. 配置docker镜像加速
docker的镜像默认都从docker-hub上拉取,然而由于不可描述的原因,国内访问速度很很慢,因此会采用镜像加速的方式拉取镜像,常用的有四个地址,分别是daocloud,七牛,docker-cn,阿里云,阿里云的要注册后才能使用专用地址,使用使用方法如下
方法1:DaoCloud+七牛+docker-cn ...
1-容器和docker基础知识
一 容器的概念
1.什么是容器:
容器是在隔离的环境里面运行的一个进程,这个隔离的环境有自己的系统目录文件,有自己的ip地址,主机名等。
也可以说:容器是一种轻量级虚拟化的技术。
2.容器相对于kvm虚拟机的优势:
容器能提供接近宿主机的性能,而kvm虚拟机会损害一部分宿主机的性能
若宿主机最多能启动10虚拟机,那么它可以启动100+容器
启动一台kvm虚拟机,可以能需要20秒,容器只需要1秒
kvm需要硬件cpu的支持,容器不需要
3.docker容器是什么?
Docker是通过内核虚拟化技术(namespaces及cgroups)来提供容器的资源隔离与资源限制。
由于Docker通过操作系统层的虚拟化实现隔离(对操作系统的内核有要求),所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,从而比kvm虚拟机更轻量。
二 docker相关概念
docker是一种软件的打包技术。
1.docker的理念
docker的主要目标是"Build,Ship and Run any App,Angwhere",构建,运输,然后处处运行
构建:制作d ...