Docker
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
Docker基本概念
Docker 包括三个基本概念: 镜像(Image) ,容器(Container) ,docker仓库(Registry)
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
1. 镜像:
Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。我们需要通过镜像启动容器,容器才是真正的可运行的操作系统。
2. 容器:
容器是独立运行的一个或一组应用,是镜像运行时的实体。镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
Docker | 面向对象 |
---|---|
镜像 | 类 |
容器 | 实例 |
3. docker仓库:
那么如何获取到镜像呢?Docker推出了Registry
这个概念,一般有人也称为是 注册中心,当我们需要发布Docker镜像的时候,就需要将镜像发布到注册中心上,这样其他人就可以下载使用。
一个 Docker Registry 中可以包含多个 Repository(仓库) ;每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 :
的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest
作为默认标签。
Registry 分为公共
和私有
两种。Docker 公司运营公共的 Registry 叫做 Docker Hub
,也是目前最流行的 Registry,其中提供了庞大的镜像集合供使用。地址为:hub.docker.com (需科学上网)
Docker的安装
Docker: Accelerated Container Application Development 直接在官网中下载安装即可,建议科学上网,不然下载很慢
windows下我们需要启动电脑的Hyper-v功能才能正常使用Docker
可以按win然后输入hyper找到启动或关闭windows功能,进去下面找到Hyper-v开启
如果找不到Hyper-v,那么可以新建文本文档,然后输入以下代码:
pushd "%~dp0"
dir /b %SystemRoot%servicingPackages*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%servicingPackages%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
再重命名为hyper.cmd,然后以管理员身份运行,输入Y,重启电脑即可
启动docker,如果报错说wsl版本太低,那么我们启动cmd,输入wsl --update
再重启电脑即可
如果提示打开不了,遇到unexcepter WSL error
, 我们打开cmd,输入netsh winsock reset
,该命令会执行重置操作,恢复 Winsock 配置为默认状态,再重启即可。
在 cmd 输入docker version
能正常看到client 和 server 的版本信息 就说明成功安装了
Docker desktop
Docker desktop封装了容器日常使用和管理的各种常用功能,用不惯命令行可以使用该图形化界面。类似于不想用git命令就使用git 的图形化界面sourcetree这样。
containers --> 容器, images --> 镜像。
volumes(数据卷):docker中的容器数据不是持久化的,一旦容器被移除,容器中的所有数据都会丢失。容器使用卷来数据持久化。我们可以将容器中的目录或者指定路径映射到宿主机的某一个目录或者位置上,将数据保存到宿主机上以实现数据持久化
Dev Environment:测试版,可以用代码创建一个开发环境然后把该环境共享给其他开发人员,让每一个人都在相同的环境下进行开发
Learning Center:官方提供的学习中心
Add Extension:和Vscode中类似,可以添加扩展实现更强大的功能