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

docker build

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

bash 复制代码
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的镜像:

bash 复制代码
docker build -t myapp .

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

docker save

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

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

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

bash 复制代码
docker save -o myapp.tar myapp

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

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

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

bash 复制代码
docker export -o mycontainer.tar mycontainer

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

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

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

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

  1. 创建Dockerfile:Dockerfile是一个文本文件,其中包含了一系列命令,这些命令用于创建一个新的Docker镜像。例如,一个简单的Dockerfile可能如下:
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"]
  1. 构建镜像 :使用docker build命令来根据Dockerfile创建一个新的镜像。例如:
bash 复制代码
docker build -t myapp:1.0 .

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

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

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

bash 复制代码
docker tag myapp:1.0 myusername/myapp:1.0

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

bash 复制代码
docker push myusername/myapp:1.0

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

bash 复制代码
docker pull myusername/myapp:1.0

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


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

相关推荐
plusplus16814 分钟前
Kubernetes“城市规划”指南:告别资源拥堵与预算超支,打造高效云原生都市
云原生·容器·kubernetes
m0_515790411 小时前
【深度学习实战(55)】记录一次在新服务器上使用docker的流程
docker
qq_312920112 小时前
K8s存储类(StorageClass)设计与Ceph集成实战
ceph·容器·kubernetes
Nazi62 小时前
kubeadm部署k8s集群环境搭建
云原生·容器·kubernetes
Brilliantee4042 小时前
藏在 K8s 幕后的记忆中枢(etcd)
容器·kubernetes·etcd
草明2 小时前
docker stats 增加一列容器名称的显示
java·开发语言·docker
焯集新人3 小时前
K8S高可用集群
云原生·容器·kubernetes
楚禾Noah4 小时前
【通用常识】YAML 中的高阶语法
运维·docker·容器
东心十12 小时前
Win11安装WSL、Docker Desktop
运维·docker·容器
tb_first15 小时前
k8sday13数据存储(1.5/2)
linux·运维·服务器·云原生·容器·kubernetes