Docker 允许您使用 Docker 映像创建容器化、打包和隔离的环境,称为 Docker 容器。在这些 Docker 容器中,您可以构建、测试甚至部署您的应用程序。这使您可以轻松地与其他开发人员共享您的应用程序运行时环境。所有这一切都是可能的,因为有一个名为 Docker 镜像的只读模板。
您可以直接从任何 Docker 注册表(例如 Dockerhub)中提取 Docker 镜像,或者使用 Dockerfile 中的 bse 镜像来构建您自己的自定义镜像。然后您可以使用 Docker build 命令来构建您的 Docker 镜像。准备好 Docker 映像后,您可以使用 Docker run 命令创建与该映像关联的容器。然后,您可以通过容器的 bash 访问应用程序运行时环境。
所有这些都可以使用简单的 Docker 命令来完成。让我们讨论将 Docker 镜像作为容器运行的所有相关命令。
要运行与映像关联的容器,您的机器中需要已经存在一个映像。创建图像有两种不同的方法。
直接从 Dockerhub 拉取镜像。
使用 Dockerfile 创建镜像。
首先,让我们尝试直接从 Dockerhub 注册表中拉取镜像。我们将尝试使用 Docker pull 命令拉取最新版本的 Ubuntu 镜像。为此,请执行下面提到的命令。
$ docker pull ubuntu:latest
如果您的机器中还没有具有相同摘要的映像,守护程序将尝试从 Dockerhub 中提取它。如果您已经有一个类似的图像,它不会拉出一个新的图像,而只是创建一个现有图像的副本。
要检查拉取是否成功,您可以列出所有图像。
$ docker images
你会发现镜像已经成功拉取了。
现在您已准备好 ubuntu 映像,让我们使用 Docker run 命令来运行与该映像关联的容器。
$ docker run -it --name=ubuntucontainer ubuntu bash
在上面的命令中,我们使用了交互和伪 TTY 选项,这将允许我们通过终端驱动程序与容器交互。我们已经使用 name 选项为容器命名。最后,我们指定了镜像的名称和容器启动后需要运行的命令。在这个命令中,命令是 bash,它可以让我们访问容器的 bash。
执行此命令后,您应该可以访问容器内的 Ubuntu 环境。您可以像使用 Ubuntu 机器一样与容器进行交互。要检查容器的状态,可以使用以下命令。
$ docker ps
此命令用于列出所有活动容器。
$ docker ps -a
此命令用于列出您机器中的所有现有容器。
另一种方法是使用 Dockerfile 创建映像。考虑下面的 Dockerfile。
FROM ubuntu:latestWORKDIR /app
在上面的 Dockerfile 中,我们使用了 FROM 指令,它将允许我们使用 ubuntu:latest 镜像作为我们的基础镜像。我们已经使用 WORKDIR 指令将 /app 目录设置为默认工作目录。您现在可以使用 Docker build 命令构建与此 Dockerfile 关联的映像。
$ docker build -t myubuntu:latest .
在这里,我们使用了 -t 选项,它允许我们为图像指定名称和标签。末尾的点指定 Dockerfile 的路径,即当前目录。执行此命令后,您可以通过列出图像来检查图像创建。
$ docker images
现在,您可以再次使用 Docker run 命令来运行与映像关联的容器。
$ docker run -it --name=ubuntucontainer myubuntu:latest bash
即使你的机器上没有镜像,你也可以直接使用 Docker run 命令。假设,您要创建一个与 centos 映像相关联的容器。可以直接使用下面的命令。
$ docker run -it --name=centosinstance centos:latest bash
在执行 Docker run 命令时,守护进程将首先检查您的系统上是否有 centos 映像。如果没有找到,就会在后台执行Docker pull命令拉取centos镜像。完成后,它将执行 Docker start 命令以在后台启动与 centos 映像关联的容器。之后,它将使用 Docker run 命令来运行容器。所有这些都发生在后台。
综上所述,即使没有镜像,也可以直接使用 Docker run 命令运行与镜像关联的 Docker 容器。或者你可以先拉取或构建一个 Docker 镜像,然后使用 Docker run 命令创建一个容器。