Docker的镜像与容器常见面试答疑及命令行操作
要让Docker能够正常工作,需要的是容器和镜像,它们是Docker的地基。镜像是一个模板,是运行一个应用程序所需的文件。容器是由镜像创建的,用来执行隔离的应用,这样应用与应用之间就不会产生干扰。
接下来,我们将学习如何创建和使用镜像与容器,并演示如何使用Docker将ASP.NET Core 示例程序容器化。分别运行在Linux和Windows容器中。
镜像是包含应用程序所需的模板文件,镜像直接可以相互引用关联,使得通过镜像创建应用程序显得简单易用。
命令 | 作用 |
---|---|
docker image ls | 查询所有的镜像 |
docker pull | 下载镜像 |
docker rmi | 删除镜像 |
docker build | 创建一个自定义的镜像 |
docker create | 创建容器 |
docker ps | 查询所有的容器 |
docker start | 启动容器 |
docker stop | 停止容器 |
docker logs | 查看容器的运行日志记录 |
docker run | 创建并运行一个容器 |
docker cp | 将文件复制到容器中 |
docker diff | 查看容器文件的变化 |
docker exec | 在容器中运行命令 |
docker commit | 将修改的容器创建为镜像 |
docker tag | 为镜像分配一个标记 |
docker login docker logout | 从镜像仓库中登录或注销 |
docker push | 将镜像发布到仓库中 |
docker inspect | 查看容器的详细配置 |
docker rmi -f $(docker image ls -aq)
Hello-world 是编程界亘古不变的练习项目,同样Docker也提供了这样的一个项目,接下来我们通过操作一Hello-world
镜像来掌握镜像的常用操作。
我们已经了解镜像是用于创建容器的模板,包含了容器我们所有的容器命令。
Hello-world镜像练习
首先我们下载镜像,输入以下命令:
docker pull hello-world
docker pull
命令用于从仓库下载镜像,以便本地可用。通常不需要明确地执行此操作,因为其他管理镜像的Docker命令,在创建容器的时候会自动拉取所需的镜像(如果本地没有则会从仓库中下载到本地)。
返回结果:
Using default tag: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76
Status: Downloaded newer image for hello-world:latest
然后列出镜像
docker image ls
返回结果如下:
REPOSITORY | TAG | IMAGE | ID | CREATED | SIZE |
---|---|---|---|---|---|
hello-world | latest | bf756fb1ae65 | 4 months ago | 13.3kB |
这个输出中只显示了一个镜像,就是hello-world镜像。当Docker下载镜像来创建容器,它将镜像存储在本地,以加快未来任务的速度。
继续拉取一个hello-world
镜像,这次我们给他添加一个Linux标记。
docker pull hello-world:linux