第一章 虚拟化之ESXi (待补充)
第二章 虚拟化之Hyper-V
第三章 虚拟化之KVM
第四章 虚拟化之Docker(一)
很多同学应该都听过Docker,这几天研究了一下Docker,和大家分享一下
官方介绍:[]
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。首先我们得先区分清楚两个概念,容器和虚拟机。我们之前文章中提到的主流虚拟化技术,大部分都是在虚拟机上实现的,每台虚拟机都需要有自己的操作系统,包括应用和和库。而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
属性 | 容器docker | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
资源使用 | 占用少,利用率极高 | 需要空间大 |
安全性 | 进程间的隔离,弱 | 系统级的隔离,强 |
单机部署数量 | 可部署成百上千 | 一般几十个 |
镜像可以看作是一个特殊的文件系统,包括容器运行时所需的程序、库、资源、配置等文件。镜像中的内容在构建之后就不会被改变。例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。
用户可以从公有仓库拉取镜像,也可以自己定制镜像(不要害怕,不难,很有趣!)。
容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。大家可以粗略的理解为,容器就是将镜像跑起来。
仓库类似与代码仓库,是Docker集中存放镜像文件的场所。最大的公开仓库是Docker Hub,你也可以实现自己的仓库。有时候会把仓库 (Repository) 和仓库注册服务器 (Registry) 混为一谈,并不严格区分。实际上,一个 Docker Registry 中可以包含多个仓库 (Repository) ,每个仓库可以包含多个标签 (Tag),每个标签对应着一个镜像。
Docker 分为 CE 和 EE 两大版本。 CE 即社区版(免费,支持周期 7 个月), EE 即企业版,强调安全,付费使用,支持周期 24 个月。官方安装文档
不同的系统安装方法有所区别,这里我们以 CentOS 7.6 64位作为本文的演示。由于 Docker-CE 支持 64 位版本的 CentOS7 ,并且要求内核版本不低于 3.10
[root@docker ~]# curl -fsSL get.docker -o get-docker.sh
[root@docker ~]# sh get-docker.sh
使用docker version查看是否安装成功
[root@docker ~]# docker -v
Docker version 19.03.13, build 4484c46d9d
启动Docker-CE
[root@docker ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@docker ~]# systemctl start docker
Docker的简单运用—部署Nginx(举个栗子)。不指定tag(就是nginx版本号),会默认下载最新版本!
[root@docker ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
library/nginx 是 image 文件在仓库里面的位置,其中 library 是 image 文件所在的组,nginx是 image 文件的名字。拉取Ngnix镜像后,就可以在本机看到这个 image 文件了。
[root@docker default]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest daee903b4e43 22 hours ago 133MB
docker启动Nginx
[root@docker default]# docker run --name nginx-test -p 8080:80 -d nginx
13b22d34396dc76b3929fa65030455399a76be0af3e92917fa5fe7196b65ed30
[root@docker default]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13b22d34396d nginx "/docker-entrypoint.…" 13 seconds ago Up 4 seconds 0.0.0.0:8080->80/tcp nginx-test
在浏览器上访问docker主机的ip:8080,会得到一个Nginx页面。
Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。可能很多朋友暂时不太理解一些东西,比如 REST API 是什么东西等,不过没关系,在后面的文章中会一一给大家讲解清楚。
Docker Client ,也称 Docker 客户端。它其实就是 Docker 提供命令行界面 (CLI) 工具,是许多 Docker 用户与 Docker 进行交互的主要方式。客户端可以构建,运行和停止应用程序,还可以远程与Docker_Host进行交互。最常用的 Docker客户端就是 docker 命令,我们可以通过 docker 命令很方便地在 host 上构建和运行 docker 容器。
Docker daemon 是服务器组件,是 Docker 最核心的后台进程,我们也把它称为守护进程。它负责响应来自 Docker Client 的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个 API Server ,负责接收由 Docker Client 发送的请求,接收到的请求将通过Docker daemon 内部的一个路由分发调度,由具体的函数来执行请求。
其实在上文的nginx栗子中,我们已经认识了很多docker命令。
[root@docker default]# docker pull image-name:tag
image-name是要拉取的镜像名字;tag(标签)就是应用的版本号,不加就默认是最新版本latest。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest daee903b4e43 25 hours ago 133MB
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d74967be30e8 nginx "/docker-entrypoint.…" 43 minutes ago Up 43 minutes 0.0.0.0:8080->80/tcp nginx-test
[root@localhost ~]# docker stop nginx-test
nginx-test
[root@localhost ~]# docker start nginx-test
nginx-test
[root@localhost ~]# docker restart nginx-test
nginx-test
[root@localhost ~]# docker stop nginx-test
nginx-test
[root@localhost ~]# docker rm nginx-test
nginx-test
[root@localhost ~]# docker ps //发现nginx容器删除了
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:c3a1592d2b6d275bef4087573355827b200b00ffc2d9849890a4f3aa2128c4ae
Deleted: sha256:daee903b4e436178418e41d8dc223b73632144847e5fe81d061296e667f16ef2
Deleted: sha256:5cb676bcf30b4812d70161abdb1cb6bbcbcd005fa5ea80a0e4e694a921e1748f
Deleted: sha256:5d1b41d97ff62d07459012d67b1ed2af8e8ed3562f0c4aefcb8ae9fa86f09368
Deleted: sha256:61a339b2108ac582b905a652bc638a28ce62972e0a84df0be362a4a1117f81d1
Deleted: sha256:2e4d3caf29b5cd9941ea4802d38dfca7f5d5f42adf78c5804704925ca8dcc66a
Deleted: sha256:f5600c6330da7bb112776ba067a32a9c20842d6ecc8ee3289f1a713b644092f8
[root@localhost ~]# docker images//发现nginx镜像删除了
REPOSITORY TAG IMAGE ID CREATED SIZE
本文发布于:2024-01-30 15:51:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170660110121123.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |