Docker镜像与容器的概念及使用

引言

Docker是一个开源的容器化平台,它通过使用容器来构建和部署应用程序。在Docker中,镜像是容器的基础,而容器则是运行在镜像之上的实例。本文将从概念角度介绍Docker镜像与容器,并通过代码示例展示其使用。

Docker镜像

在Docker中,镜像是一个轻量级、独立的可执行软件包,其中包含了运行应用程序所需的所有内容,包括代码、运行时环境、库文件、系统工具等。镜像通过层叠的方式构建,每一层都基于上一层进行扩展和修改,这样可以实现镜像的复用和共享。镜像是只读的,任何对镜像的修改都会生成一个新的镜像。

Docker镜像的获取

在Docker中,可以从不同的来源获取镜像,包括官方仓库、第三方仓库以及自己构建。下面是一个通过Docker命令行获取官方镜像的示例:

docker pull ubuntu:latest

在这个示例中,pull命令用于从Docker Hub(官方仓库)下载Ubuntu的最新版本镜像。

Docker镜像的构建

除了从仓库获取镜像外,还可以通过编写Dockerfile来构建自定义的镜像。Dockerfile是一个文本文件,其中包含了一系列的指令,用于定义镜像的构建过程。下面是一个简单的Dockerfile示例:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

在这个示例中,FROM指令指定了基础镜像,RUN指令用于在镜像中执行命令,COPY指令用于将本地文件复制到镜像中,EXPOSE指令用于声明容器监听的端口,CMD指令用于指定容器启动时执行的命令。

Docker镜像的分享与保存

Docker镜像可以通过分享和保存来实现在不同环境中的复用。下面是一个示例,展示了如何将本地的镜像保存为文件并分享给其他人:

docker save -o myimage.tar myimage:tag

在这个示例中,save命令用于将指定的镜像保存为文件,-o选项指定了保存的文件名。

Docker容器

Docker容器是在镜像的基础上创建的一个可运行的实例,可以被启动、停止、删除和重启。每个容器都是相互隔离的,具有自己的文件系统、进程空间、网络和资源限制。

Docker容器的创建与运行

在Docker中,可以通过Docker镜像创建容器并运行。下面是一个示例,展示了如何创建一个Nginx容器并运行:

docker run -d --name mycontainer -p 80:80 myimage:tag

在这个示例中,run命令用于创建并运行容器,-d选项表示在后台运行,--name选项指定容器的名称,-p选项指定容器与宿主机之间的端口映射。

Docker容器的管理

在Docker中,可以使用命令行工具或Docker API来管理容器,包括启动、停止、删除和重启等操作。

下面是一些常用的管理容器的示例命令:

docker start mycontainer  # 启动容器
docker stop mycontainer   # 停止容器
docker rm mycontainer     # 删除容器
docker restart mycontainer  # 重启容器

序列图

下面是一个通过序列图展示Docker镜像与容器的创建和运行过程的示例