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 右上角显示的那个名字。如下图:

要将Docker镜像推送到远程仓库,你可以按照以下步骤进行操作: 1. 首先,确保你已经构建了要推送的Docker镜像。你可以使用Dockerfile来构建镜像使用命令`docker build -t dockerId/镜像名:标签 .`,其中dockerId是你的Docker账号,镜像名是你给镜像起的名字,标签是你给镜像打的标签。例如,`docker build -t docker2021ne/jdk1.8:0713 .`\[2\] 2. 登录到Docker账号,使用命令`docker login`,并输入你的Docker账号和密码\[2\] 3. 推送镜像远程仓库使用命令`docker push dockerId/镜像名:标签`,其中dockerId是你的Docker账号,镜像名是你给镜像起的名字,标签是你给镜像打的标签。例如,`docker push docker2021ne/jdk1.8:0713`\[1\] 4. 等待推送完成,你的镜像就会被上传到远程仓库中了\[1\] 如果你想下载远程仓库中的镜像,可以使用命令`docker pull dockerId/镜像名:标签`,其中dockerId是镜像所属的Docker账号,镜像名是镜像的名字,标签是镜像的标签。例如,`docker pull docker2021ne/jdk1.8:0713`\[3\]。 #### 引用[.reference_title] - *1* *2* *3* [Docker push命令使用 Docker镜像推送到远程仓库 Docker镜像推送Dockerhub](https://blog.youkuaiyun.com/HaHa_Sir/article/details/119412754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值