原创不易,请多多支持!对Java技术感兴趣的童鞋请关注我,后续技术分享更精彩。
概述
如今云技术相比几年前,突飞猛进,红透半边天。而虚拟容器技术的发展,对云的推动又起到了很关键的作用。作为技术人,学习永无止境。近期有时间也看了下docker技术,现整理成文,以便后期参考,同时也是一个相互学习的过程。
介绍
docker是一种虚拟化技术平台工具。像一个沙箱,把应用的依赖环境封装到一起,作为一个独立的单元对外运行。它的这种机制天然拥有跨平台特性,可以让应用相关人员更多的关注业务,避免因为部署系统环境不同,产生兼容性问题的处理成本。它另一个优势:相比拥有同样沙箱特性的虚拟机,更轻,更灵活,更高效。
docker引擎
docker是client-server架构模式。
server端以daemon进程运行,对外提供服务。并创建和管理各类docker对象,如images(镜像)、container(容器)、networks(网络模块), 和volumes(数据卷)。
client端通过cli(命令行)或rest api接口访问docker各类服务。
client通过cli或rest操作docker daemon程序。docker查找本地image镜像文件,若image不存在,则通过registry服务去远程镜像仓库拉取相应image文件。拉取的image文件放入container容器沙箱中运行。
- Image
镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
- Container
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例 一样,镜像是静态的定义,容器是镜像运行时的实体。
- Registry
Docker仓库是一个集中的存储、分发镜像的服务。
一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
docker 安装
本文以Linux centos 7操作系统安装docker为例。
仓库安装
安装必要包
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装仓库
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
docker 社区版安装
安装docker引擎
$ sudo yum install docker-ce docker-ce-cli containerd.io
启动docker
$ sudo systemctl start docker
检查docker是否启动成功
$ sudo docker run hello-world
运行hello-world程序,出现以下截图提示,安装成功。
docer版本查看
docker --version
docker镜像查看
docker images
docker容器查看
docker container ls --all
镜像加速器
镜像拉取默认站点在国外,可能下载比较忙,最好本地安装相应加速器。
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{ "registry-mirrors": [ "https://registry.docker-cn.com" ]}
修改好后,重启docker,生效配置。
sudo systemctl restart docker
docker的入门与安装介绍到此结束。感谢耐心看到这里的童鞋,希望对你有所帮助。欢迎留言和转发。伴随深入学习,将陆续分享docker其他主题,敬请期待。