Docker 从构建开始导出一个镜像

简介: docker build [OPTIONS] PATH | URL | -

docker build

docker build命令用于从Dockerfile创建一个镜像。它的基本格式如下:


docker build [OPTIONS] PATH | URL | -


这里的PATH是Dockerfile所在的路径,URL是一个Git仓库地址,-表示从标准输入读取Dockerfile。


docker build命令的一些常用选项包括:


  • -t, --tag: 为新创建的镜像指定一个名称和标签,格式为name:tag。如果不指定标签,那么默认标签为latest。
  • --file, -f: 指定要使用的Dockerfile路径。如果不在当前目录下,需要指定相对路径或绝对路径。
  • --no-cache: 创建镜像时,不使用缓存。如果你更改了Dockerfile,那么建议使用这个选项,以确保所有步骤都是最新的。
  • --rm: 构建成功后删除中间容器。这是默认行为,如果你想保留中间容器,可以使用--rm=false。

例如,如果你有一个Dockerfile在当前目录下,你可以使用以下命令来创建一个名为myapp的镜像:

docker build -t myapp .


这里的.表示当前目录,Docker会在这个目录下寻找Dockerfile。


docker save

1.Docker提供了两个命令来导出镜像:docker save和docker export。这两个命令的功能类似,但是有一些重要的区别。


2.docker save: 这个命令用于将一个或多个镜像保存为一个tar归档文件。这个命令保存的是完整的镜像,包括所有的层、标签和版本信息。你可以使用docker load命令来加载这个tar归档文件,恢复镜像。docker save的基本格式如下:

docker save [OPTIONS] IMAGE [IMAGE...]
1

例如,你可以使用以下命令来保存一个名为myapp的镜像:


docker save -o myapp.tar myapp


这个命令会创建一个名为myapp.tar的文件,包含myapp镜像的所有信息。


docker export: 这个命令用于将一个容器的文件系统导出为一个tar归档文件。这个命令保存的只是容器的当前状态,不包括历史和元数据。你可以使用docker import命令来从这个tar归档文件创建一个新的镜像。docker export的基本格式如下:

docker export [OPTIONS] CONTAINER


例如,你可以使用以下命令来导出一个名为mycontainer的容器:


docker export -o mycontainer.tar mycontainer


这个命令会创建一个名为mycontainer.tar的文件,包含mycontainer容器的当前文件系统。


总的来说,如果你想保存完整的镜像信息,应该使用docker save。如果你只关心容器的当前状态,可以使用docker export。


创建自己的镜像推送,拉取

创建和推送自己的Docker镜像需要以下步骤:


1.创建Dockerfile:

Dockerfile是一个文本文件,其中包含了一系列命令,这些命令用于创建一个新的Docker镜像。例如,一个简单的Dockerfile可能如下:

# 使用官方的Python运行时作为父镜像
FROM python:3.7-slim
# 设置工作目录
WORKDIR /app
# 将当前目录的内容复制到容器的/app目录中
ADD . /app
# 安装需要的包
RUN pip install --no-cache-dir -r requirements.txt
# 设置环境变量
ENV NAME World
# 运行app.py当容器启动时
CMD ["python", "app.py"]



2.构建镜像:

使用docker build命令来根据Dockerfile创建一个新的镜像。例如:

docker build -t myapp:1.0 .


这个命令会在当前目录下查找Dockerfile,并创建一个名为myapp,标签为1.0的镜像。


3.推送镜像:

首先,你需要在Docker Hub或其他Docker镜像仓库注册一个账号。然后,使用docker login命令来登录你的账号。例如:

docker login


然后,你需要将你的镜像标记为仓库的一部分。例如,如果你的Docker Hub用户名是myusername,你可以使用以下命令来标记你的镜像:

docker tag myapp:1.0 myusername/myapp:1.0


最后,使用docker push命令来推送你的镜像到仓库:


docker push myusername/myapp:1.0


拉取镜像的命令是docker pull,例如:


docker pull myusername/myapp:1.0


这个命令会从仓库中拉取你的镜像。


分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za

目录
相关文章
|
6月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
592 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
6月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
479 100
|
6月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
444 99
|
6月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
603 98
|
6月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
6月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
691 6
|
6月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
288 8
|
7月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
476 16
|
7月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。