CLOUD 004
DocKer
一 什么是容器:
容器技术已经成为应用程序封装和交付的核心技术
容器技术的核心有以下几个内核技术:
Cgroup 资源管理
NameSpace 进程隔离
SElinux安全
由于是在物理机上实行隔离,启动一个容器,可以像启动一个进程一样快速
二 Docker 的优点
更快速的交付和部署:开发人员可以使用镜像快速的构建标准开发环境;开发完成后,测试和运维人员可以使用开发人员提供的docker镜像快速部署应用,可以避免开发和测试运维人员之间的环境差异导致的部署问题。
更高校的资源利用:Docker容器的运行不需要额外的虚拟化管理程序支持,它是内核级的虚拟化,在占用更少资源的情况实现更高的性能。
更方便的迁移和扩展:Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、服务器等。这种兼容使得用户可以在不同的平台之间很方便的完成应用迁移。
更简单的更新管理:使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作,并且所有修改都以增量方式进行分发和更新。
1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
3、节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
三 什么是Docker
Docker 是完整的一套容器管理系统
Docker 提供一组命令.让用户更加方便直接的使用容器技术,而不需要更多地关心底层内核技术.
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化
Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或者数据库应用等等)及其运行环境能够做到“一次封装,到处运行
我们可以将容器理解为一种沙盒。每个容器内运行一个应用,不同的容器相互隔离,容器之间可以建立通信机制。容器的创建和停止都十分快速(秒级),容器自身对资源的需求十分有限,远比虚拟机本身占用的资源少。
1优点:1相比传统虚拟化技术 ,容器更加简洁高效
2传统虚拟机需要给每一个虚拟机安装操作系统
3容器使用共享公共库和程序
四 容器缺点:容器的隔离性没有虚拟化强
共用Linux 内核,安全性有先天缺陷
SELinux 难以驾驭
监控容器和容器排错有挑战
五 部署docker
1 安装环境准备
- 64 位操作系统
2)RDHEL6.5以上,推荐RHEL7(内核3.0以上) - 关闭防火墙 Docker/openstack 都会接管系统防火墙
2 安装docker
1)配置yum源
Mount RHEL7-extras.iso /var/ftp/extras
Mkdir /var/ftp/extras
2 )环境准备两台虚拟机docker 1 docker2
[extras]
name=CentOS-$releasever - Extras
baseurl=“ftp://192.168.1.254/extras”
enabled=1
gpgcheck=0
3 软件包安装
[@rootdocker 1]# yum -y install docker
六 Docker 镜像
1)什么是镜像
在docker 中容器是基于镜像启动的
镜像是启动容器的核心
镜像采用分层设计
使用快照的Cow技术,确保底层数据不丢失
Docker hub 镜像仓库
http://hub.docker.com
Docker 官方提供镜像的仓库
1 下载一个busybox 的镜像
查找镜像:Docker search busybox
下载镜像:Docker pull docker.io/busybox
查看镜像:Docker images
上传镜像
Docker push
Docker help push 查看帮助
Man docker-search 查看man帮助
2 导入导出镜像
docker images
REPOSITORY TAG IMAGE ID(仓库的唯一标识) CREATED
仓库名(唯一)标签名(唯一) -> 对应唯一的ID
镜像另存为tar 包:
docker save(备份) docker.io/busybox:latest -o(output 到哪里) ff(文件名)
docker save docker.io/busybox:latest -o busybox.tar
tar -tvf busybox.tar ->备份
恢复镜像docker2 -> docker 1
[root@docker2 ~]# rsync -av busybox.tar root@192.168.1.30:/root
或者scp busybox.tar root@192.168.1.30:/root
导入镜像
[root@docker1 ~]# docker load -i busybox.tar
Loaded image: docker.io/busybox:latest
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest db8ee88ad75f 2 weeks ago
导入真机的镜像到docker1 docker2
真机操作
Scp /linux-soft/04/docker/* root@192.168.1.30 \ 1.31
Rsync -av /linux-soft/04/docker/* root@192.168.1.30 \1.31
四个镜像:nginx.tar centos.tar redis.tar ubuntu.tar
Docker 1 :docker images
Dcoker2 :docker images
3 启动镜像
镜像是生成容器用的
[root@docker1 ~]# docker images
Docker run -it dockerr.io/centos:iatest /bin/bash
Docker run -it =virsh define +start+console
开启另一个终端:
[root@docker1~]#docker ps =virsh list
4 debian和redhat 的区别 (拓展)
商业版本以Redhat为代表,开源社区版本则以debian为代表。
Debian dpkg apt-get
Redhat rpm yum
Rpm -qa dpkg-l
Rpm -ql net-tools dpkg-L passwd
二 镜像命令
Docker images
Docker histroy 镜像制作历史
Docker inspect 镜像低层详细信息
Docker pull 下载
Docker push 上传
Docker rmi 删除本地镜像
Docker save 镜像另存tar 包
Docker search 搜索镜像
Docker tag 修改镜像名和标签
Docker load tar 包导入镜像
Docker images
docker pull docker.io/busybox
docker inspect redis:iatest
docker history docker.io/centos:latest
Docker search redis
docker load -i busybox.tar
docker save docker.io/busybox -o busybox.tar
docker rmi ooxx:latest
docker tag docker.io/busybox:latest ooxx:latest
容器常用命令
Docker run 运行容器
Docker ps 查看容器列表 -a(所有容器) -q(容器ID)
Docker stop 关闭容器
Docker start 启动容器
Docker restart
Docker attach | exec -it 进入容器
Docker inspect 查看容器底层详细信息
Docker top 查看容器进程
Docker rm 删除容器
Yum -y install net-tools iproute psmisc bash-completion