容器是一种用于在本地和云中跨各种环境打包和运行Windows和Linux应用程序的技术。容器提供了一个轻量级的隔离环境,使应用程序更易于开发,部署和管理。容器可以快速启动和停止,因此非常适合需要快速适应不断变化的需求的应用程序。容器的轻量性质也使其成为增加基础结构的密度和利用率的有用工具。
所有容器都是根据容器映像创建的。容器映像是一堆文件,这些文件被组织成位于您的本地计算机或远程容器注册表中的多层堆栈。容器映像由支持应用程序,应用程序,应用程序的任何运行时或依赖项以及应用程序需要正常运行的其他任何其他配置文件所需的用户模式操作系统文件组成。
容器是一个隔离的,轻量级的筒仓,用于在主机操作系统上运行应用程序。容器构建在主机操作系统内核(可以认为是操作系统的嵌入式管道)之上。容器共享主机操作系统的内核时,容器不会不受限制地访问它。取而代之的是,容器获得了系统的隔离(有时是虚拟化)视图。例如,容器可以访问文件系统和注册表的虚拟版本,但是任何更改仅影响容器,并且在停止时将其丢弃。为了保存数据,容器可以装载永久性存储,例如Azure磁盘或文件共享(包括Azure Files)。
容器建立在内核之上,但是内核并未提供应用程序需要运行的所有API和服务-其中大多数由在用户模式下在内核之上运行的系统文件(库)提供。因为容器与主机的用户模式环境隔离,所以容器需要这些用户模式系统文件的自己的副本,这些文件被打包到称为基础映像的文件中。基础映像用作构建容器的基础层,为容器提供内核未提供的操作系统服务。
Microsoft提供了几个映像(称为基本映像),您可以将它们用作构建自己的容器映像的起点:
您可以使用以下步骤在Windows 10专业版和企业版上安装Docker。
下载并安装Docker Desktop,如果您还没有一个免费的Docker帐户,请创建一个(如果不想创建,请评论区留言,我会通过百度网盘分享)。有关更多详细信息,请参阅Docker文档。
在安装过程中,将默认容器类型设置为Windows容器。要在安装完成后进行切换,可以使用Windows系统托盘中的Docker项目(如下所示),或在PowerShell提示符中使用以下命令:
& $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon
所有容器都是根据容器映像创建的。Microsoft提供了几种称为基础映像的入门映像供您选择(有关更多详细信息,请参见容器基础映像)。此过程将提取(下载并安装)WIndows基础映像,也就是下图的第三个(比较大,3.7G左右)。
打开命令提示符窗口(例如内置命令提示符,PowerShell或Windows Terminal),然后运行以下命令下载并安装基本映像:
docker pull mcr.microsoft.com/windows:1809
映像下载完成后,通过查询本地docker映像存储库来验证系统中是否存在该映像。运行命令docker images
将返回已安装映像的列表。
docker images
docker run -it mcr.microsoft.com/windows:1809 cmd.exe
echo "Hello World!" > Hello.txt
exit
docker ps -a
为容器的ID: docker commit helloworld
docker images
--rm
参数会在命令行(cmd.exe)停止后自动删除该容器。docker run --rm helloworld cmd.exe /s /c type Hello.txt
结果是从“ HelloWorld”映像创建了一个容器,在该容器中启动了cmd.exe实例,该实例读取了我们的文件并将文件内容输出到Shell,然后该容器停止并被删除。
//删除容器
docker rm -f containerID
//删除镜像
docker rmi -f imageID
备注:还有一种通过dockerfile的方式自动运行,还在研究中...
右键任务栏docker图标,依次选择settings,Daemon,选中Experimental,然后重启docker。
还需要注意的是,在执行docker pull mcr.microsoft.com/windows:1809命令时,标红的字段是映像标签,也就是映像的版本,这个一定要低于系统版本,具体的可参考https://hub.docker.com/_/microsoft-windows