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

目录
相关文章
|
1月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
1天前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
111 75
|
23天前
|
Docker 容器
将本地的应用程序打包成Docker镜像
将本地的应用程序打包成Docker镜像
|
7天前
|
NoSQL PHP MongoDB
docker push推送自己搭建的镜像
本文详细介绍了如何搭建和复盘两个Web安全挑战环境:人力资源管理系统和邮件管理系统。首先,通过Docker搭建MongoDB和PHP环境,模拟人力资源管理系统的漏洞,包括nosql注入和文件写入等。接着,复盘了如何利用这些漏洞获取flag。邮件管理系统部分,通过目录遍历、文件恢复和字符串比较等技术,逐步绕过验证并最终获取flag。文章提供了详细的步骤和代码示例,适合安全研究人员学习和实践。
26 3
docker push推送自己搭建的镜像
|
23天前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
44 9
|
23天前
|
存储 缓存 运维
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像。此机制减少存储占用,提高构建和传输效率。Docker还通过缓存机制提升构建和运行效率,减少重复工作。文章深入解析了Docker镜像分层存储与缓存机制,包括具体实现、管理优化及实际应用案例,帮助读者全面理解其优势与挑战。
43 4
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
1月前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。