[从零开始学容器] 4.Docker的基础核心概念与镜像配置

Docker核心概念:镜像、容器、仓库

Docker核心概念

镜像

镜像是一个只读的文件和文件夹组合。它包含了容器运行时所需要的所有基础文件和配置信息,是容器启动的基础。所以你想启动一个容器,那首先必须要有一个镜像。镜像是 Docker 容器启动的先决条件

使用镜像的两种方式:

  1. 基于基础镜像构建
  2. 从镜像仓库上下载
容器

容器是 Docker 的另一个核心概念。通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。

仓库

如同Github类似,用来存储Docker镜像。可以分为公共镜像仓库和私有镜像

三者关系

容器、镜像和仓库的关系

镜像操作

操作可分为:

  • 拉取镜像,使用docker pull命令拉取远程仓库的镜像到本地 ;

  • 重命名镜像,使用docker tag命令“重命名”镜像 ;

  • 查看镜像,使用docker image ls或docker images命令查看本地已经存在的镜像 ;

  • 删除镜像,使用docker rmi命令删除无用镜像 ;

  • 构建镜像,构建镜像有两种方式。第一种方式是使用docker build命令基于 Dockerfile 构建镜像;第二种方式是使用docker commit命令基于已经运行的容器提交为镜像

拉取镜像

使用命令docker pull拉取,其命令的格式为: docker pull [Registry]/[Repository]/[Image]:[Tag]

  • Registry 为注册服务器,Docker 默认会从 docker.io 拉取镜像,如果你有自己的镜像仓库,可以把 Registry 替换为自己的注册服务器
  • Repository 为镜像仓库,通常把一组相关联的镜像归为一个镜像仓库,library为 Docker 默认的镜像仓库
  • Image 为镜像名称
  • Tag 为镜像的标签,如果你不指定拉取镜像的标签,默认为latest
查看镜像

使用命令docker images或者 docker image ls命令

使用后者可查询指定镜像,如docker image ls busybox

重命名镜像

使用命令docker tag将镜像重命名,命令格式为: docker tag [SOURCE_IMAGE[:TAG][TARGET_IMAGE][:TAG]

如:

docker tag busybox:latest mybusybox:latest

操作结果如下

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              dc3bacd8b5ea        9 days ago          1.23MB
mybusybox           latest              dc3bacd8b5ea        9 days ago          1.23MB

这里的两个镜像IMAGE ID一样,原因是指向的都是同一个镜像文件

删除镜像

使用命令docker rmi或者docker image rm命令删除镜像

如:

 docker rmi mybusybox

操作结果:

Untagged: mybusybox:latest
构建镜像

构建镜像有两种方式:

  1. 使用docker commit命令从运行中的容器提交为镜像;
  2. 使用docker build命令从 Dockerfile 构建镜像

在使用Dockerfile构建镜像时,有以下特性:

  • Dockerfile 的每一行命令都会生成一个独立的镜像层,并且拥有唯一的 ID;
  • Dockerfile 的命令是完全透明的,通过查看 Dockerfile 的内容,就可以知道镜像是如何一步步构建的;
  • Dockerfile 是纯文本的,方便跟随代码一起存放在代码仓库并做版本管理。

Dockerfile 常用指令

Dockerfile 指令指令简介
FROMDockerfile 除了注释第一行必须是 FROM ,FROM 后面跟镜像名称,代表我们要基于哪个基础镜像构建我们的容器。
RUNRUN 后面跟一个具体的命令,类似于 Linux 命令行执行命令。
ADD拷贝本机文件或者远程文件到镜像内
COPY拷贝本机文件到镜像内
USER指定容器启动的用户
ENTRYPOINT容器的启动命令
CMDCMD 为 ENTRYPOINT 指令提供默认参数,也可以单独使用 CMD 指定容器启动参数
ENV指定容器运行时的环境变量,格式为 key=value
ARG定义外部变量,构建镜像时可以使用 build-arg = 的格式传递参数用于构建
EXPOSE指定容器监听的端口,格式为 [port]/tcp 或者 [port]/udp
WORKDIR为 Dockerfile 中跟在其后的所有 RUN、CMD、ENTRYPOINT、COPY 和 ADD 命令设置工作目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值