容器、Docker、虚拟机,别再傻傻分不清!(建议收藏)
扫描二维码
随时随地手机看文章
容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。Docker是第一个使容器能在不同机器之间移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。
图1 容器 vs 虚拟机
-
更高效的利用系统资源
-
更快速的启动时间
-
一致的运行环境
-
更轻松的迁移
-
更轻松的维护和扩展
Docker容器典型使用流程…
Docker容器有如下三个主要概念:-
镜像:
Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。
-
镜像仓库:
Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。
-
容器:
Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。
典型的使用流程如图2所示: 图2 Docker容器典型使用流程
(1)首先开发者在开发环境机器上开发应用并制作镜像。
Docker执行命令,构建镜像并存储在机器上。
(2)开发者发送上传镜像命令。
Docker收到命令后,将本地镜像上传到镜像仓库。
(3)开发者向生产环境机器发送运行镜像命令。
使用示例…
下面使用Docker将基于Nginx镜像打包一个容器镜像,并基于容器镜像运行应用,然后推送到容器镜像仓库。-
安装Docker
说明: CentOS 8.0操作系统使用上述脚本安装Docker会出现问题,建议使用如下命令安装较低版本Docker。curl -fsSL get.docker.com -o get-docker.shsh get-docker.sh
wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo sudosed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repoyum install docker-ce-18.06.3.ce -ysystemctl restart docker
Docker打包镜像…
Docker提供了一种便捷的描述应用打包的方式,叫做Dockerfile,如下所示:执行docker build命令打包镜像。# 使用官方提供的Nginx镜像作为基础镜像FROM nginx:alpine# 执行一条命令修改Nginx镜像index.html的内容RUN echo "hello world" > /usr/share/nginx/html/index.html# 允许外界访问容器的80端口EXPOSE 80
docker build -t hello .
其中-t表示给镜像加一个标签,也就是给镜像取名,这里镜像名为hello。. 表示在当前目录下执行该打包命令。
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhello latest d120ec16dcea 17 minutes ago 158MBnginx alpine eeb27ee6b893 2 months ago 148MB
本地运行容器镜像…
有了镜像后,您可以在本地执行docker run命令运行容器镜像。
# docker run -p 8080:80 hello
docker run命令会启动一个容器,命令中-p是将本地机器的8080端口映射到容器的80端口,即本地机器的8080端口的流量会映射到容器的80端口,当您在本地机器访问 http://127.0.0.1:8080时,就会访问到容器中,此时浏览器中返回的内容应该就是“hello world”。
-
把镜像推送到镜像仓库
详细解析如下:# docker tag hello swr.cn-east-3.myhuaweicloud.com/container/hello:v1
-
swr.cn-east-3.myhuaweicloud.com是仓库地址,每个华为云区域的地址不同。
-
container是组织名,组织一般在SWR中创建,如果没有创建则首次上传的时候会自动创建,组织名在单个区域内全局唯一,需要选择合适的组织名称。
-
v1则是hello镜像分配的版本号。
# docker push swr.cn-east-3.myhuaweicloud.com/container/hello:v1
当需要使用该镜像时,使用docker pull命令拉取(下载)该命令即可。
# docker pull swr.cn-east-3.myhuaweicloud.com/container/hello:v1
-END-
本文摘自华为云社区
作者 | yixiaoer
| 整理文章为传播相关技术,版权归原作者所有 |
| 如有侵权,请联系删除 |
【1】超长干货为你解析:从串口驱动到Linux驱动模型,嵌入式必会!
【2】超全!嵌入式必懂的CAN总线一文讲通了
【3】干货:嵌入式系统设计开发大全!(万字总结)
【4】嵌入式系统求职回忆录:广嵌、迈瑞、华为、智光……
【5】嵌入式行业真的没有前途吗?
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!
ckquote>