Docker 使用 Dockerfile 创建镜像及 push 到远程仓库

Dockerfile 文件的内容编写,涉及内容太多,仅以创建纯净的 ubuntu 系统为例,其内容如下:

# 使用官方的 Ubuntu 作为基础镜像
FROM ubuntu

# 安装 SSH 服务器
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd

# 设置 SSH 登录密码(请替换为你自己的密码)
RUN echo 'root:rootspassword' | chpasswd

# 允许 root 用户远程登录
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# 启用 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]

上述内容一定是纯文本格式,文件名是 Dockerfile ,没有扩展名且大小写敏感。

1、Windows 环境下,使用管理员权限进入命令窗口

        一路 cd 到 Dockerfile 文件所在的目录。如:

         E:\docker\Dockerfile> docker build -t my-ubuntu .

        “E:\docker\Dockerfile”是 Dockerfile 文件所在的文件夹,“my-ubuntu”是新建的镜像的名字,最好加上 tag,最终如下: E:\docker\Dockerfile> docker build -t my-ubuntu:9-27 .         (最后有个点)

        创建成功以后会显示:What's Next?
         View summary of image vulnerabilities and recommendations → docker scout quickview
通过 “docker images” 命令可以看到刚才创建的这个镜像 my-ubuntu。

2、运行一个容器

        docker run -d -p 2222:22 --name first-ubuntu my-ubuntu:9-27 

        上述可以运行一个名为 first-ubuntu 的容器,可以通过主机 2222 端口对这个 ubuntu 容器进行管理。

3、如何 push 到仓库。

        这个时候如果通过 Docker Desktop 在 images 列表中,使用菜单项 Push to Hub 上传到仓库时,一定会收到 denied: requested access to the resource is denied 的错误提示。到这里基本上会把头毛挠光了。

        明明是按步骤创建的镜像,为什么不能 push 呢?网上有很多帖子,但是基本上都是错误的,也许是版本不同,反正在我的机器上就是死活不成功。

        于是,我又想着如何查看这个镜像文件在哪里。原来 windows 上运行 docker ,其文件管理,是其内部的 linux 系统负责的,对于 windows 文件系统来说根本不可见。此处绝望了1个小时。

        百折不挠、向死而生,吾将上下而百度,终于发现云端仓库的一些微妙之处。https://hub.docker.com/repositories/用户名    ,而我本地镜像名称是 my-ubuntu:9-27 ,按照官方文档使用 push 命令的格式是 push ****/镜像名:tag。那么这个****是什么?官方文档语焉不详。我尝试使用 docker tag my-ubuntu:9-27 用户名/my-ubuntu:9-27 ,也就是说,把原来镜像名改为用户名+/+镜像名 这样的格式。然后再次刷新 Docker Desktop 中的 images 列表,从 用户名/my-ubuntu:9-27 后面的菜单项中执行 “Push to Hub”,大功告成!!!!

总结:要把自己创建的镜像 push 到自己用户目录下,才有权限。用户名要登录 docker 官网可以获得,或者在 docker desktop 右上角显示的那个名字。如下图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值