Docker入门

简介

Docker:高速创新的企业集装箱平台,在任何地方安全地构建,共享和运行任何应用程序
简单来说,完成操作系统(软件)的复制粘贴
Docker官网
Docker Hub:下载镜像
Docker Hub

概念

Docker for Developers

使用容器可以更快地构建和部署新应用程序。Docker容器将软件及其依赖关系整合到一个标准化的软件开发单元中,包括运行所需的一切:代码,运行时,系统工具和库。这可以保证您的应用程序始终运行相同,并使协作变得像共享容器映像一样简单。
无论是Windows还是Linux都支持Docker工具和API,并帮助您构建更好的软件

Docker for IT Operations

Docker使开发人员能够在处理任何应用程序时使用容器 - 无论是新的微服务还是现有的应用程序。 容器将代码,配置和依赖关系打包成一个独立的包,可能使应用程序更安全和可移植。 但是,当您需要管理整个应用程序组合时,仅靠容器是不够的,因为它们不能直接满足组织的合规性,安全性和运营治理需求。
需要一个企业级容器平台,以提供大规模的集成软件生命周期和运营管理工作流程和安全性,同时保证企业支持和经过认证的技术生态系统。 Docker Enterprise容器平台提供自由选择,灵活的操作和集成的安全性,因此您可以放心地在生产中部署,管理和保护您的应用程序。

什么是容器

What is a Container?
将软件打包成标准化单元,用于开发,装运和部署
容器是一个标准的软件单元,它将代码及其所有依赖关系打包,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。 Docker容器映像是一个轻量级,独立的可执行软件包,包含运行应用程序所需的一切:代码,运行时,系统工具,系统库和设置。
容器映像在运行时成为容器,在Docker容器的情况下 - 映像在Docker Engine上运行时成为容器。适用于基于Linux和Windows的应用程序,无论基础架构如何,容器化软件都将始终运行相同。容器将软件与其环境隔离开来,并确保它可以统一运行,尽管开发和分段之间存在差异。
在Docker Engine上运行的Docker容器:
标准:Docker创建了容器的行业标准,因此它们可以随处携带
轻量级:容器共享机器的操作系统内核,因此不需要每个应用程序的操作系统,从而提高服务器效率并降低服务器和许可成本
安全:应用程序在容器中更安全,Docker提供业界最强大的默认隔离功能
Docker容器无处不在:Linux,Windows,数据中心,云,无服务器等。
Docker容器技术于2013年作为开源Docker Engine推出。
它利用围绕容器的现有计算概念,特别是在Linux世界中,称为cgroups和名称空间的原语。 Docker的技术是独一无二的,因为它专注于开发人员和系统运营商将应用程序依赖性与基础架构分离的要求。
Linux世界的成功推动了与微软的合作,将Docker容器及其功能引入Windows Server(有时也称为Docker Windows容器)。
Docker及其开源项目Moby提供的技术已被所有主要数据中心供应商和云提供商所利用。其中许多提供商正在利用Docker来提供容器本地IaaS产品。此外,领先的开源无服务器框架利用Docker容器技术。

比较容器和虚拟机


容器和虚拟机具有类似的资源隔离和分配优势,但功能不同,因为容器虚拟化操作系统而不是硬件。容器更便携,更高效。
容器
容器是应用层的抽象,它将代码和依赖关系打包在一起。 多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。 容器占用的空间比VM少(容器映像的大小通常为几十MB),可以处理更多的应用程序,并且需要更少的VM和操作系统。
虚拟机
虚拟机(VM)是物理硬件的抽象,将一台服务器转变为多台服务器。 管理程序允许多台VM在单台机器上运行。 每个VM都包含操作系统的完整副本,应用程序,必要的二进制文件和库 - 占用数十GB。 虚拟机也可能很慢启动。

容器和虚拟机在一起


在一起使用的容器和VM在部署和管理应用程序时提供了极大的灵活性

镜像、容器、仓库

镜像,是特殊的文件系统,他包含程序、配置、资源等
容器,镜像的实例。就像是类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
仓库,用于保存镜像的服务
镜像和容器也可以类比软件安装包和软件
更多资料

安装镜像

以MongoDB Image为例,在Docker Hub中搜索mongo

一个容器需要pull,create,所以直接执行create命令也是可以的(会自动pull)

docker container create mongo:4.1.12

如果不太清楚使用,可以查看官方文档,或者使用help命令查看帮助


当然,这一步也可以直接通过Kitematic可视化操作

将镜像映射到本机

运行Docker Desktop,登录Docker上注册的账号
右键菜单栏中打开Kitematic
通过Kitematic完成映射(可以在powershell中通过命令行完成)


然后就可以像在本机一样访问镜像啦

连接

我们希望能在powershell中连接MongoDB并执行一些数据库操作
根据help,我们应该执行exec命令,并且指定command(bash:命令行)

docker container exec -it mongo bash

然后我们连接了MongoDB,从这里开始,需要输入MongoDB的命令

所以我们需要查看MongoDB的官方文档,完成自己的目标

其他

一些常用指令

Docker报错处理

driver failed programming external connectivity on endpoint

容器映射到本机的端口被占用,或者docker服务启动时定义的自定义链DOCKER由于某种原因被清掉
被占用就处理占用端口的程序,被清掉就重启Docker及容器
参考资料:
docker端口映射或启动容器时报错Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen
docker 报错:driver failed programming external connectivity on endpoint lnmp (2f647b8aba729787bf34f6a8

posted @ 2019-05-31 19:26  Lulus  阅读(680)  评论(0编辑  收藏  举报