Docker 是一个开源平台,支持开发人员构建、部署、运行、更新和管理容器,这些容器是标准化的可执行组件,结合了应用源代码以及在任何情况中运行该代码所需的使用体系 (OS) 库和依靠项。
容器简化了分布式应用的部署和交付过程。 随着构造转向云原生开发和混合多云情况,它们已变得越来越盛行。 开发人员可以直接使用 Linux 和其他使用体系中内置的功能,在没有 Docker 的情况下创建容器。 但 Docker 使容器化更加迅速、简便和安全。 制止本文撰写之时,Docker 报告称,已有凌驾 1300 万名开发人员在使用该平台(链接位于 ibm.com 外部)。
Docker 也指 Docker, Inc.(链接位于 ibm.com 外部),即销售 Docker 商业版本的企业,还可以是 Docker, Inc. 和许多其他构造和个人开展的 Docker 开源项目。
容器的工作原理
容器是通过 Linux 内核中内置的过程隔离和捏造化功能来实现的。 控制组 (Cgroups) 用于为各进程分配资源,名称空间(namespace)用于限定进程访问或对其他资源或体系地区的可视性 ,这些功能支持多个应用组件共享主机使用体系的单个实例的资源,这与体系管理步伐支持多台捏造机 (VM) 共享单个硬件服务器的 CPU、内存和其他资源的方式大致相同。
容器的架构
Docker 包括三个根本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件体系。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小体系的 root 文件体系。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象步伐设计中的类和实例一样,镜像是静态的界说,容器是镜像运行时的实体。容器可以被创建、启动、制止、删除、停息等。
- 仓库(Repository):仓库可看成一个代码控制中央,用来保存镜像。
Docker的上风
因此,容器技术可提供捏造机的所有功能和上风,包括应用隔离、经济高效的可扩展性和可处理性,以及其他重要的上风:
- 更轻巧:与捏造机不同,容器不会承载整个使用体系实例和体系管理步伐的有效负载。 它们仅包括执行代码所需的使用体系进程和依靠项。 容器巨细以兆字节为单位(某些捏造机则是以千兆字节为单位)来衡量,因此它们可以更好地使用硬件容量,启动速率也更快。
- 提高了开发人员的工作效率:容器化应用可以“一次编写,到处运行”。 与捏造机相比,容器的部署、设置和重启过程更迅速且更简朴。 这使得容器非常得当在持续集成和持续交付 (CI/CD) 管道中使用,并且更得当采取灵敏和 DevOps 实践的开发团队。
- 提高了资源使用率:开发人员使用容器在硬件上运行的应用副本数量是使用捏造机的数倍。 这可以减少云支出。
为何使用 Docker?
Docker 如今非常受欢迎,甚至可以与“容器”一词互换使用。 而在 Docker 于 2013 年面世之前,第一批与容器相关的技术早已存在数年,甚至数十年(链接位于 IBM 外部)。
最值得留意的是,2008 年,Linux 内核中实现了 LinuXContainers (LXC),LXC 完全支持单个 Linux 实例的捏造化。 固然现在仍在使用 LXC,但也提供了使用 Linux 内核的新技术。 现代的开源 Linux 使用体系 Ubuntu 也提供了此功能。
Docker 支持开发人员使用简朴的命令访问这些本机容器化功能,并通过节流工作量的应用步伐编程接口 (API) 主动执行。 与 LXC 相比,Docker 提供了以下功能:
- 加强的无缝容器可移植性:固然 LXC 容器通常引用特定于呆板的设置,但 Docker 容器无需修改即可在任何桌面、数据中央和云情况中运行。
- 更轻巧且更细粒度的更新:通过使用 LXC,可以在单个容器中组合多个进程。 这样就可以构建持续运行的应用,纵然为了更新或修复而关闭某个部分也不例外。
- 主动化容器创建:Docker 可以基于应用源代码主动构建容器。
- 容器版本控制:Docker 可以跟踪容器映像的版本,回滚到先前的版本,以及跟踪版本的构建者和构建方式。 它甚至可以只上传现有版本和新版本之间的增量。
- 容器复用:现有容器可用作根本映像(本质上类似于用于构建新容器的模板)。
- 共享容器库:开发人员可以访问包含数千个用户贡献容器的开源注册表。
如今,Docker 容器化也实用于 Microsoft Windows 和 Apple MacOS。 开发人员可以在任何使用体系上运行 Docker 容器,大多数领先的云提供商(包括 Amazon Web Services (AWS)、Microsoft Azure 和 IBM Cloud)都提供了一些专用服务,这些服务可帮助开发人员构建、部署和运行使用 Docker 进行容器化的应用。
在初步认识了解了Docker后,下面正式进入Docker使用环节!
一、进入Docker官网
首先先到Docker官网下载最新官方Docker for Windows链接:Docker下载
二、启动Microsoft Hyper-V
在电脑上打开“控制面板”->“步伐”-> “启动或关闭Windows功能”。
三、安装Docker
在Windows上安装Docker桌面版
- 安装完毕后,点击Close and restart
- 默认勾选,点击Finish即可完成
- 等候启动Docker引擎
- 报错如下:点击restart重启即可。
- 现在步伐正常启动并稳固啦
四、玩转Docker
至此就可以在windows上开始Docker之路啦!
五、运行Hello-world
显示Hello-world镜像确实存在!
至此拉取Hello-world成功!
六、设置阿里云镜像加速
- 刚才的pull使用比较慢,接下来需要设置一下镜像代理,便于更快速的拉取资源!
- 登录阿里云官网:镜像加速器(需要账号登录)
地址是免费的,每个人都有。
- "registry-mirrors": ["https://inhj05a1.mirror.aliyuncs.com"]
复制代码
点击Apply andr esatrt 运用并重启即可
至此设置阿里云镜像加速完毕!
七、容器常用命令
查察版本
获取镜像
如果我们本地没有 mysql镜像,我们可以使用docker pull命令来载入 mysql镜像:
查察镜像
查察所有镜像源:
启动容器
以下命令使用 mysql镜像启动一个容器,参数为以命令行模式进入该容器:
- docker run -it mysql /bin/bash
复制代码 输入exit容器制止运行
以是,更常用的是这种背景启动的方式:
- docker run -itd mysql /bin/bash
复制代码 留意每run一个就创建一个容器!
参数阐明:
- -i: 交互式使用。
- -t: 终端。
- mysql: mysql镜像。
- /bin/bash:放在镜像名后的是命令,这里我们盼望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit
运行容器,一样平常是指定容器内的端口和容器的名字(不能与之前的名字重复)
--expose:编辑容器内的端口
--name:编辑容器的名字
最后的my-golang-app 为镜像源
- docker run --expose 3888/tcp --name mycontainer-15 my-golang-app
复制代码 删除容器
运行结果如下:
批量删除
- docker rm -f 容器ID
- 1 容器ID2 容器ID……
复制代码 运行结果如下:
- [root@localhost docker]# docker rm -f 31094a8a38df d6e155d5c175 a49250b3790b 87a94ee8c07f ffd24d4aaeca b2b6aeaa9073 ca4c7c1ff87c ccce1fb65649 07efbc1eb5ad
- 31094a8a38df
- d6e155d5c175
- a49250b3790b
- 87a94ee8c07f
- ffd24d4aaeca
- b2b6aeaa9073
- ca4c7c1ff87c
- ccce1fb65649
- 07efbc1eb5ad
- [root@localhost docker]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
复制代码 查察容器
常用命令如下:
运行结果如下:
运行结果如下:
ps:列出正在运行的容器。
参数阐明:
- -a:列出所有容器(包括制止的容器)。
- -q:仅显示容器ID。
- -f:根据过滤器条件过滤输出。
- "name=CONTAINER_NAME":过滤器条件,匹配指定名称的容器。
停息容器
停息容器的运行,但是容器并没有制止。
规复容器的停息。
制止容器
使用此命令会制止容器的运行,如果想不制止运行,可以使用停息的命令。
重启容器
发现容器的状态为Up代表启动!
进入容器
- docker exec -it 容器的名字 bash
复制代码
这里进入容器实际上是背景启动的,纵然exit退出步伐后也不会关闭步伐。
更新容器
docker update命令用于更新一个正在运行的容器的设置。
它允许你修改容器的资源限定、重启策略和其他设置选项。
以下是命令的根本用法:
例如:
- #开机自启动应用
- docker update 容器id/名字 --restart=always
复制代码 查察端口开放情况
查察端口占用情况
查察所有
运行结果如下:
查察指定服务
如查察指定的docker
查察端口映射
使用如下命令查找容器内部映射到宿主机的端口号:
查找进程号(PID)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |