如何从 Docker 容器制作镜像

时间:2021-06-03 15:47:54

标签: docker

我正在学习 docker 容器中的 wrap a tool 教程。

在链接的教程页面中,第 2 步描述了如何创建容器

$ docker run -ti ubuntu

root@70235f7726cf:/#

我安装了许多库/程序

$ apt-get install wget build-essential zlib1g-dev libncurses5-dev
[...]

然后

exit

第 3 步描述了如何将 docker 容器保存到映像中,但只有将其保存在私有存储库中而不是 docker hub 中的过程。 我做了一些研究,以下是将图像推送到 Hub 中的 Docker 存储库的命令

$ docker push myusr/my-repo:mytoolv1

但由于我没有保存图像,因此推送不起作用。 我正在遵循的教程缺少中间的一些步骤,或者可能是我缺少一些 Docker 知识。

2 个答案:

答案 0 :(得分:2)

我认为您可能混淆了一些术语。不能推送容器到dockerhub,只能推送镜像。

要创建自定义映像,您需要一个 Dockerfile。像这样:

FROM ubuntu:18.04

RUN apt update
RUN apt install -y wget build-essential zlib1g-dev libncurses5-dev

...

然后从同一文件夹通过运行构建自定义图像

docker build -t myusr/my-repo:mytoolv1 .

因此,您可以使用您尝试过的命令将图像推送到 dockerhub:

docker push myusr/my-repo:mytoolv1

答案 1 :(得分:1)

您认为不正确的是,您认为可以将容器推送到本地存储库,但实际上您正在推送图像。< /p>

我希望你知道图像和容器之间的区别,如果没有你可以搜索一下。

您可以使用以下内容创建一个名为 Dockerfile 的文件(没有扩展名并使用此确切名称):

FROM ubuntu:20.04

# to set time zone as you may encounter some unexpected stuck when selecting time zone during the build
ENV TZ=Asia/Tehran # search more about it in https://www.php.net/manual/en/timezones.php
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update && apt-get install -y wget build-essential zlib1g-dev libncurses5-dev

现在您应该构建您的图像:

docker build -t yourrepo/NAME:TAG_VERSION .

示例:

docker build -t yourrepo/my_image:1.0.0 .

现在你可以推送了:

docker push yourrepo/my_image:1.0.0
相关问题