■ 威海职业学院 赵永华
编者按: Docker for Windows提供了一种快速启动和运行的好方法,我们可以使用Hyper-V运行Linux容器。本文具体介绍了如何使用Docker for Windows在Windows 10中创建Linux容器。
不少系统管理员想要了解如何使用容器,Docker for Windows提供了一种快速启动和运行的好方法。 Windows10秋季升级版内置支持Windows容器和Hyper-V容器,我们可以使用Hyper-V运行Linux容器。
本文将具体介绍如何使用Docker for Windows在Windows 10中创建Linux容器。如果要在Windows Server上执行相同的任务,则需要使用Docker企业版(Docker EE),Docker for Windows仅支持Windows 10的64位Pro和企业版。
到Docker’官网下载,网址:https://docs.docker.com/docker-for-windows/install/。
运行安装程序并按照说明进行操作。在安装过程中,可能需要重启一次或两次。如果尚未打开,则安装程序将自动启用Hyper-V并支持Windows容器。
在从Docker的存储库下载基本映像之前,您需要在欢迎屏幕上登录Docker,网 址:https://id.docker.com/login/。
如果还没有Docker用户ID,可以在此处创建一个。当登录Docker for Windows时,一定要使用Docker用户ID而不是电子邮件地址。Docker for Windows虽然对用户ID和电子邮件地址都会接受,但是使用电子邮件地址将无法访问Docker存储库。
在创建Linux容器之前,需要从Docker的存储库中提取基本映像。通过以下PowerShell命令即可从存储库中提取最新的Ubuntu基本映像:
docker pull ubuntu
使用上面的命令将从存储库中提取最新的Ubuntu版本。如果要提取特定版本的Ubuntu,请使用如下所示的指定版本命令:dockerpullubuntu:18.04
如果要在存储库中搜索Ubuntu映像,可使用如下搜索命令:
docker search ubuntu
通过以下命令可列出本地机的可用映像,包括大小、ID和标记信息:
docker images
要创建新的Linux容器,我们需要基本映像的ID运行“docker run”命令。 笔者在下面的命令中,在本地存储库中使用了最新版Ubuntu的映像ID,并且一旦容器启动,bash终端就会启动:
dockerrun-i-tcd6d8154f1e1 /bin/bash
上述命令中,-i和-t参数允许bash进程在容器中启动,将控制台附加到进程的标准输入、输出和标准错误,并分配伪tty纯文本控制台。
创建容器后,我们会看到一个bash提示符,键入主机名hostname后可查看容器的Linux主机名。这里我们可以通过exit命令随时停止容器。退出容器会阻止其运行。
值得指出的是,docker create类似于docker run,但docker create命令在映像上创建一个可写容器层,并准备运行用户指定的命令。容器未启动。docker create命令适用于用户想要提前设置容器并准备好使用docker start的情况。
我们可以使用“docker ps”命令列出本地设备上的容器,如果加上参数“-all”则可以列出所有容器,无论它们是否正在运行。 如果省略-all参数,则docker ps仅显示正在运行的容器,我们可以在输出中看到列出的容器和映像ID。
docker ps -all
如果想要退出容器重新启动它,可使用“docker start”命令,但此时需要输入和容器的ID,命令如下:
dockerstartdf75aa301d62
如果要连接到容器终端,可使用“docker attach”命令如下:
dockerattachdf75aa301d62
我们可以通过正在运行的容器创建一个新的本地映像,我们可以从中创建新的容器。比如,以下命令将在容器中安装vim文本编辑器,然后停止容器。为此,在容器中运行以下三个命令:
apt-get update
apt-get install vim
exit
现在,我们使用docker commit从容器中创建新图像。此时需要指定容器的ID和图像名称,可以覆盖现有图像或创建新图像。
这里的例子是,笔者创建一个名为Ubuntu的新图像,其中包含一个标记(18.04vim)来帮助识别它,命令如下:
dockercommitdf75aa301d62 ubuntu:18.04vim
最后,我们再次运行docker images命令,就会在列表中看到新图像。这样我们就可以使用此映像创建包含vim文本编辑器的Linux容器(如图1所示)。
图1 由容器生成映像