网站首页 > 开源技术 正文
> 本人原创文章转载请注明出处,本文属于个人笔记,请勿作执行或投资依据,如有侵权请联系我删除。
> 作者:沈心静氣
Docker基础简介
为什么会有docker出现?
产品从开发到上线,从操作系统,到运行环境,再到应用配置。
作为开发和运维之间的协作,我们需要关心很多东西。特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。环境配置麻烦,换一台机器,就要重来一次,费时费力。Docker提供了一个标准化解决方案,软件可以带环境安装,也就是说安装的时候,把原始环境一模一样地复制过来,消除“在我的机器上可正常工作”的问题。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
容器和 VM(虚拟机)的主要区别是,容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。容器使用宿主操作系统的内核,而虚拟机使用独立的内核。
上面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
使用docker前先了解几个概念
1.Docker镜像
Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了Mysql或用户需要的其它应用程序。
Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统被称为UnionFS。镜像可以基于Dockerfile构建,Dockerfile是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新的层次结构。
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
2.Docker容器
Docker 利用容器来运行应用,容器是由Docker镜像创建的运行实例。Docker容器类似虚拟机,可以支持的操作包括启动,停止,删除等。每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
3.Docker仓库
如果你使用过git和github就很容易理解Docker的仓库概念。Docker 仓库的概念跟Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register) 来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。Docker运行中使用的默认仓库是 Docker Hub 公共仓库。仓库支持的操作类似git,当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
4.数据卷
主要的作用就是保留数据,因为当容器删除时,容器的存储层会被清空,定义数据卷是为了与物理磁盘挂接,从而将数据保留。
5.常用运维命令
删除所有镜像
docker rmi $(docker images -q)
删除所有未运行 Docker 容器
docker rm $(docker ps -a -q)
启动 容器
docker run --name 容器id -d -p 80:80 nginx
访问容器内部
$ docker exec -it 容器名 bash
commit构建镜像将容器打包成镜像
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名: [TAG]
$ docker commit -m= "修改了默认网页" -a= "tomx.top" 容器id nginx:v2
根据dockerfile生成本地镜像
docker build --no-cache --force-rm -t registry.tomx.com:8000/Harbor/tomx:latest .
将镜像推到Harbor仓库
docker push registry.tomx.com:8000/Harbor/tomx:latest
- 原创首发文章,手动码字,辛苦不易,转载请注明出处,个人博客地址 www.tomx.top另外可以关注我微信公众号 Tomx-top,这里将带来最新的实战运维知识。
猜你喜欢
- 2024-10-27 什么是容器运行时?(什么是 容器)
- 2024-10-27 家庭版windows不能安装DockerDesktop的取代方案
- 2024-10-27 震惊!八岁儿子竟知道容器测评十个小知识?老爸,他开天眼了?
- 2024-10-27 红帽RHEL8和RHEL7有什么区别?(红帽8和红帽7区别大不大)
- 2024-10-27 Linux命令笔记-01(linux命令教程)
- 2024-10-27 runc_page allocation failure排查
- 2024-10-27 Nvidia GPU如何在Kubernetes 里工作
- 2024-10-27 容器运行时分类(容器的运行实例)
- 2024-10-27 重学容器02: 部署容器运行时Containerd
- 2024-10-27 什么是runwasi(什么是润物细无声的教育)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)