【docker基础】: 镜像与容器

99 阅读4分钟

docker镜像与容器

容器(container)

容器是一个运行在你机器上的沙盒进程,它是与其它运行在你主机上的进程相隔离的

容器利用Linux内核的名称空间cgroups技术,在进程层面提供了应用程序的sandbox化运行环境。

容器的介绍:

  • 它是一个镜像的实例。你能创建,开启,停止,移动或者删除容器通过 CLI 或者 DockerAPI
  • 它能运行在本机主机,虚拟机或者部署到云上
  • 它是可移植的,能运行在任何操作系统上
  • 它与其它容器是隔离的,每个容器有自己的配置,运行自己的程序

它的运行环境就是linux,如果你是windows,相当于是你运行了一个linux虚拟机,然后再运行容器。

镜像(image)

在运行一个容器时,它使用一个隔离的文件系统。这个自定义的文件系统是通过一个容器镜像提供的。

由于这个镜像包含容器的文件系统,所以它必须包含运行应用所需要的一切 包括所有依赖,配置,脚本,二进制文件等。

镜像也包含容器的其他配置,如环境变量,一个默认要运行的命令,以及其他元数据。

打个比方,镜像就是类,容器就是实例对象


知道上面的概念之后,我们可以尝试使用docker了。

拉取镜像

拉取镜像之前先下载docker。

docker 图形化界面Get Docker | Docker Documentation,选择适合你的版本去下载。

下载完毕之后,进入下一步:

寻找需要的镜像

我们要想运行一个容器,肯定是要先拉取镜像再运行容器的,那我们怎么拉取镜像,又怎么知道拉取哪个镜像呢?

我们可以去 Explore Docker's Container Image Repository | Docker Hub寻找我们所需要的镜像。

拉取镜像指令

当发现自己所需要的镜像后,你可以在CLI中输入拉取命令:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
例子: docker pull ubuntu

docker pull后面可以添加选项,下面是Option的基本使用讲解:

options:

  • -a , --all-tags:拉取所有标签(tag)对应的图像。
  • --disable-content-trust:忽略镜像的签名校验,默认情况下会校验。(签名是为了完整性和安全性,你不验证可能会拿到不安全的镜像)
  • --platform:指定要拉取的平台,如 linux/amd64 等。
  • -q , --quiet:只显示镜像 ID,冒号前不显示任何输出信息。(就是拉取过程几乎没提示)

例子: docker pull --all-tags ubuntu:使用--all-tags拉取所有版本的镜像,不建议操作。
例子: docker pull -q ubuntu, 这样拉取时命令行基本没有提示。

拉取指定版本的镜像

docker hub仓库里有很多镜像,同一个镜像有很多版本,我们要拉取镜像时不仅需要指定拉取的镜像,也要指定拉取的镜像版本(默认是最新的版本)。

举个例子:docker pull ubuntu:18.04, 直接在镜像名称后加上(:版本号)即可。

又比如: docker pull Mysql:8.0, 前面是镜像名,后面是版本号。

查看镜像

如果我们是使用的是CLI(命令行工具), 我们可以通过docker images 来查看我们的镜像列表。

查看镜像的命令: docker images [OPTIONS] [REPOSITORY[:TAG]]
例子: docker images

docker images 后面可以加option,下面是option的介绍。

oprions:

  • -a , --all:显示所有镜像,默认隐藏中间镜像。
  • -q , --quiet:只显示镜像 ID,冒号前不显示任何输出信息。
  • -f , --filter:按条件过滤显示的镜像。
  • --no-trunc:显示完整的镜像信息,而不是截断。
  • --format:指定返回值的模板打印格式。
  • --digests: 显示摘要

例子: docker images -a, 就可以看到所有的镜像:

image.png

例子: docker images -q 可以看到所有的镜像ID: image.png

详情参照: docker images | Docker Documentation.


上面我们学习了镜像和容器的概念并学习了拉取镜像和查看镜像的操作。

总结

  1. 拉取容器的命令docker pull <选项> <镜像名>
  2. 查看拉取的容器: docker images <选项> <可以指定容器名,也可以不指定>

下一篇: 运行容器 【docker基础】: 容器的运行 - 掘金 (juejin.cn)