你好,我是码农飞哥,本篇文章是Ceph实战专栏的第二篇文章,本文首先会简单介绍一下Docker的基本概念,接出来会介绍在CentOS7上布署docker,最后会介绍一下Docker的一些常用命令。
Docker的基本概念哪些是容器
容器是一种工具,指的是可以装下其他物品的工具,例如生活中的衣柜,袋子等都可以成为一个容器。具体到软件中的容器,就是在隔离的环境下运行的一个进程,假如进程停止了,容器才会销毁。隔离的环境中拥有自己的系统文件,IP地址,主机名等。容器是完全的沙箱环境centos svn服务器,互相之间不会有任何插口。说完容器以后,让我们思索一下,容器跟虚拟机有啥区别呢?
容器虚拟化和KVM虚拟化的区别KVM虚拟化:须要硬件的支持(首先安装Hypervisor(vmware、KVM、hyperv)上),须要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程)不须要硬件的支持,不须要模拟硬件(在系统上直接安装DockerEngine,之后直接安装docker,没有Hypervisor),共用宿主机的内核,启动时间秒级(没有开机启动流程)
Docker相对vm的优点占用更少的资源,一台机器可以跑上千个docker容器轻量级、快速启停,秒级实现更快的交付和布署,一次创建和配置后,可以在任意地方运行。内核级别的虚拟化,不须要额外的hypevisor支持,会有更高的性能和效率易迁移,平台依赖性不强缺点隔离性不如VM网路配置受限,打通网路想都别想Docker的介绍
Docker是一种软件的打包技术,用于创建,管理和编排容器:1.建立:做一个docker镜像2.运输:dockerpull3.运行:启动一个容器每一个容器,他都有自己的系统文件rootfs。KVM解决了硬件和操作系统之间的依赖KVM独立的虚拟c盘,XML配置文件docker解决了软件和操作系统环境之间的依赖,才能使应用程序可以在几乎任何地方以相同的方法运行(一次建立,处处运行)。开发人员可以在自己电脑上创建并测试好容器,无需任何更改就能否在生产系统的虚拟机、物理服务器或公有云主机上运行。Docker是通过内核虚拟化技术(namespaces及cgroupscpu、内存、磁盘IO等)容器的资源隔离与安全保障等,所以Docker容器在运行时,不须要类似虚拟机(VM)额外的操作系统开支,提升资源借助率。namespace资源隔离cgroups进程的资源限制kvm虚拟c盘文件,资源隔离kvm资源限制,--cpus--memory
Docker的组成
一个完整的Docker有六个组成部份。1.Docker主机(Host):一个数学机或虚拟机,用于运行Docker服务进程和容器。2.DockerClient顾客端:顾客端使用Docker命令或其他工具调用DockerAPI。3.DockerDaemon守护进程:Docker守护进程,运行docker容器。4.DockerImage镜像:镜像可以理解为创建实例使用的模板。5.DockerContainer容器:容器是从镜像生成对外提供服务的一个或一组服务。6.Docker库房(Registry):保存镜像的库房:类似于git或svn这样的版本控制系统,官方库房:/下边是Docker组成的示意图:
假如把Docker跟面向对象做一个比较,这么镜像是静态的定义,对应与面向对象里的类,容器是镜像运行时的实体。对应于面向对象里的对象。容器可以被创建、启动、停止、删除、暂停等。
Docker的安装
1.卸载原有版本:
sudo yum remove docker docker-common docker-selinux docker-engine
2.安装依赖包:
yum -y install yum-utils device-mapper-persistent-data lvm2
3.配置YUM源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装Docker,为防止版本兼容性问题,这儿指定版本;
yum -y install docker-ce-19.03.9
5.启动Docker
systemctl start docker
6.设置Docker自启动
systemctl enable docker
7.配置镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6a6e85x9.mirror.aliyuncs.com"]
}
EOF
重启Dockerdaemon守护进程
sudo systemctl daemon-reload
9.重启Docker
sudo systemctl restart docker
Docker应用场景场景一:节约项目环境布署时间
每次布署项目到测试、生产等环境,都要布署一大堆的依赖的软件、工具,并且布署期间出现问题概率很大,不经意就耗费了很长时间。Docker主要理念就是环境打包布署,可以在任意DockerEngine运行。前期我们只须要将每位项目环境打包到镜像,push到镜像库房,当有须要布署这个项目时linux培训,直接pull镜像启动容器,这个项目就可以访问了!一次建立,四处运行。
场景二:环境一致性
Docker将项目环境打包成镜像,可以在任何DockerEngine上浪,此时Docker就是我们这种项目的基石,Docker可移植性,保持运行状态一致性。
场景三:包和版本管理;
Docker学习了git的模式,仿造github,衍生出了dockerhub,即镜像库房,同时还可以有自己的私有库房,库房的运用,是docker在cd过程中的一大优势。
场景四:微服务
微服务是尽可能细细度分拆业务程序构架,由多个独立服务组成业务系统,Docker的容器的设计原则:一个容器一个服务red hat linux,容器之间互相隔离,不妨害想一下,假如容器作为这种独立服务的布署单元centos svn服务器,是不是有点恰到用处。
Docker的常用命令杀掉docker下所有进程并删掉容器
docker kill $(docker ps -q); docker rm -f $(docker ps -a -q)
更改docker的配置文件
vim /etc/systemd/system/multi-user.target.wants/docker.service
测试docker是否启动成功
docker run hello-world
查看容器是否运行
docker ps -a
发觉容器不是up状态,想找下诱因:
docker logs -f docker_name
比如:dockerlogs-fmon
容器启动了,我想进去玩玩
docker exec docker_name
不想玩了,我想退出容器(不会杀害容器)
exit 或者 ctrl+D
查看容器的详尽信息
docker inspect docker_name
查看容器占用了多少资源
docker stats docker_name
想停止、重启、干掉这个容器
docker stop|restart|rm -f docker_name
镜像相关的知识点1.查看有什么镜像
docker images
2.怎样查看镜像的详尽信息
docker inspect [REPOSITORY:TAG] IMAGE ID
3.给镜像打tags
docker tag redis 172.22.67.38:5000/redis
4.将镜像上传到我的私人库房
docker push 172.22.67.38:5000/redis
下载用pull,删除用rm,注意,如果镜像正在被某个镜像占用,则删不掉。。你可以-f。。
5.搭建一个私人镜像库房
docker run -d -p 5000:5000 --restart=always --name registry -v /data/registry/data:/var/lib/registry registry:2
总结
本文首先介绍了容器的基本概念,容器说白了就是隔离环境中的一个进程,容器内的任何操作都不会对宿主机形成影响。接着比较了容器虚拟机与KVM虚拟化的区别。三者最重要的区别是,容器虚拟化不须要硬件支持,不须要安装Hypervisor。而KVM虚拟化则须要。接着就是介绍了Docker的安装以及常用命令。
参考
docker简介与特征
文章评论