我正在学习 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 知识。
答案 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