浅色边框标题
docker简介
Linux容器作为一类操作系统层面的虚拟化技术成果,旨在立足于单一Linux主机交付多套隔离性Linux环境。
与虚拟机不同,容器系统并不需要运行特定的guest os。相反,容器共享同一套主机操作系统内核,同时利用guest os的系统库以交付必要的系统功能。由于无需借助于专门的操作系统,因此容器在启动速度上要远远优于虚拟机。
上图是经典对比图,左图是传统的虚拟化,属于平台虚拟化(模拟,全虚拟化,半虚拟化)每个虚拟机运行在自己独立完整的操作系统中;右图是容器,与虚拟机不同,容器系统并不需要运行特定的访客操作系统。
容器能够利用Namespaces、SELinux、chroot以及CGroups等Linux内核功能,从而交付一套类似于虚拟机的隔离性环境。Linux安全模块能够确保来自容器的主机设备与内核访问行为受到妥善管理,从而避免入侵活动的发生。除此之外,容器还能够通过其主机操作系统运行多种不同Linux发行版——只要各类操作系统拥有同样的底层CPU架构要求(然而在生产环境中并不能做到真正意义上的完全隔离);
Docker是开源基于LXC(linux container)的高级容器引擎,基于go语言开源,使用内核的cgroups(文件系统隔离)及namespace(一种命名方法);请记住Docker是容器引擎,平常我们一般都说Docker是容器,但是其本质别搞混了。
安装及运行docker
实验环境中的Docker(CentOS7.3):
1.安装:
[root@minion ~]# yum -y install docker(注意配置好yum源,使用的是centos自带的yum源)
2. 运行:
安装完成以后我们可以使用docker这个命令,同时在上图中我们看到以下信息:此时的Docker是客户端,有版本,API版本,go版本等信息,最重要的是最后的提示,此时的Docker Daemon并未运行;
启动docker服务,然后继续查看版本信息,可以看到服务端相关的信息,如下图所示:
3.查看帮助:
4. 查看本地仓库的镜像:
5. 在DockerHub 上搜索共享镜像:
6.拉取共享镜像:
在拉取前需要更改/etc/docker/daemon.json(国内访问dockerhub速度你懂得,在这里使用了ustc的镜像加速)
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}
7.再次查看本地仓库:
像不像git,哈哈。。。
8.总结:
哈哈,总算是把准备工作搞定了,其实准备工作里有很多细节性的东西,比如docker images里有tag标签,我们是可以指定标签名字的,如果使用Docker私有仓库将会接触很多TAG,可以指定上传镜像TAG及下载镜像TAG;同样我们也可以定制自己的镜像,将一些常用服务做成镜像,那么在下次使用时就再也不用安装及配置啦;Docker镜像是分层的,类似我们小时候用的字帖;
是的,容器运行需要:仓库、镜像、容器引擎
运行容器
1.运行一个名字为C1的容器,并获取一个shell;
此时我们进入C1容器的shell在这里可以执行一些基本命令,
例如我们装一下ip这个命令
是不是与在宿主机上没有区别呢?
同样我们是不是可以干坏事呢(从docker里面可以直接进入物理机)
2.离开容器(为什么是离开,如果是退出,那么容器就挂了)
Ctrl+p+q
在这里能看到正在运行的容器,容器的ID使用的镜像,执行的命令,创建时间以及它的名字
3.连接正在运行的容器
又进来了!
4.退出容器
直接从容器退出后,docker ps已经看不到了,那么使用参数-a即可:
5.启动一个退出的容器
又活了
6.使用宿主机停止容器
7.删除容器
先停止再删除
上面docker rm “ID编号”与docker rm “name”效果一样
容器已经没有了;
总结:通过这几个命令,已经可以运行,连接,查看,删除容器了,如果想真正使用这些容器,这些远远不够;
四、总结:
一向不关于总结,总是想到哪里说到哪里,以上是Docker的基本命令及操作,通过这些命令我们可以轻易的运行一个容器,并在不使用后销毁,在运行容器的时候你会发现不到很快容器就运行起来了,具体时间看宿主机配置,一般都在1秒左右,和传统虚拟机相比快多啦;
同时,虽然我们已经能够运行容器,但是也存在着问题,端口,服务,存储等等。
感谢particular投稿。。。
欢迎各位来稿。。。这种也是蛮好玩的,不是么。。。不要怂。。。
领取专属 10元无门槛券
私享最新 技术干货