> 技术文档 > Docker系列(七):实战!手把手教你上传私有镜像到Docker Hub并远程部署 (以Fusion为例)_dockerhub上传镜像

Docker系列(七):实战!手把手教你上传私有镜像到Docker Hub并远程部署 (以Fusion为例)_dockerhub上传镜像


引言

Docker Hub 是 Docker 生态系统的重要组成部分。它提供了一个集中式的平台,方便用户进行镜像的打包、拉取、上传、下载和部署等操作。用户可以轻松创建自己的镜像,通过打包将应用程序及其依赖封装在一起,确保在不同环境中的一致性。然后,这些镜像可以上传至 Docker Hub,供其他用户下载和使用。同时,用户也可以从 Docker Hub 拉取已有的镜像,快速部署到本地或远程服务器,大大简化了应用的分发和部署流程,提高了开发和运维的效率,促进了软件的共享与协作。

最后,如果大家喜欢我的创作风格,请大家多多关注up主,你们的支持就是我创作最大的动力!如果各位观众老爷觉得我哪些地方需要改进,请一定在评论区告诉我,马上改!在此感谢大家了。

各位观众老爷,本文通俗易懂,快速熟悉Docker,收藏本文,关注up不迷路,后续将持续分享Docker纯干货(请观众老爷放心,绝对又干又通俗易懂)。请多多关注、收藏、评论,评论区等你~~~


文章目录

  • 引言
  • 一、注册 Docker Hub 账号
    • (一)访问官网与填写信息
    • (二)验证与账号激活
  • 二、镜像上传至 Docker Hub --- 以fusion容器为例,这是我自己创建的容器
    • (一)将现有容器打包成镜像
    • (二)登录 Docker 客户端与镜像打标签
    • (三)执行上传操作与进度监控
  • 三、Docker Hub 镜像的远程部署与应用
    • (一)远程服务器环境配置与镜像拉取
    • (二)容器启动与运行参数设置
    • (三)部署后的监控与维护
  • 往期回顾 --- 往期专栏 和 系列博文


正 文


一、注册 Docker Hub 账号

(一)访问官网与填写信息

  1. 注册Gmail(个人建议使用google mail注册Docker hub)

    Google Mail: Google Mail 官网

    Docker系列(七):实战!手把手教你上传私有镜像到Docker Hub并远程部署 (以Fusion为例)_dockerhub上传镜像

    注释: 注册前,最好修改一下电脑的系统语言(改为英语),定位改为美国,增大注册成功几率。现在注册Google mail审查较为严格,识别到国内ip容易注册失败。

  2. 注册Docker hub

    Docker hub: Docker hub官网

    Docker系列(七):实战!手把手教你上传私有镜像到Docker Hub并远程部署 (以Fusion为例)_dockerhub上传镜像

    打开 Docker 官方网站,进入注册页面。在这里,需要准确填写个人或组织的相关信息,包括但不限于邮箱地址、用户名以及密码等必要内容。这些基本信息将构成您在 Docker Hub 上唯一的身份标识,确保您后续能够顺利登录并使用平台的各项功能。

    注释: 这里我觉得最恶心得就是取名字,总是重名,请重新命名!可以提前想一个比较好记的名字,别忘了账户和密码!

(二)验证与账号激活

完成信息填写后,Docker 系统会向您提供的邮箱发送一封验证邮件。及时登录邮箱,找到该邮件并点击其中的验证链接,即可激活您的 Docker Hub 账号。这一步骤是保障账号安全性和真实性的关键环节,只有通过验证的账号才能正式开启在 Docker Hub 上的操作之旅。

Docker系列(七):实战!手把手教你上传私有镜像到Docker Hub并远程部署 (以Fusion为例)_dockerhub上传镜像

二、镜像上传至 Docker Hub — 以fusion容器为例,这是我自己创建的容器

(一)将现有容器打包成镜像

  1. 查看现有容器

    在终端中输入以下命令,查看本地所有容器及其详细信息,找到名为“fusion”的容器:

    docker ps -a
  2. 打包容器为镜像

    使用以下命令将名为“fusion”的容器打包成镜像。这里的“username”替换为您在 Docker Hub 上的用户名,“myimage”是您为镜像指定的名称:

    # 以下两种命名方式均可docker commit fusion username/myimagedocker commit fusion myimage
  3. 验证镜像创建

    使用以下命令查看新创建的镜像是否在本地镜像列表中,确认镜像已成功创建:

    docker images

(二)登录 Docker 客户端与镜像打标签

  1. 修改配置

    Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

    docker login总是报各种超时错误,导致登录不成功(如上所示)。主要原因为docker没有走代理,只需要给docker单独配置代理即可。

    sudo mkdir -p /etc/systemd/system/docker.service.dsudo nano /etc/systemd/system/docker.service.d/http-proxy.conf# 下面内容进行复制粘贴即可[Service]Environment=\"HTTP_PROXY=http://127.0.0.1:7890\" # 注意,修改成自己使用的代理Environment=\"HTTPS_PROXY=http://127.0.0.1:7890\" # 注意,修改成自己使用的代理

    重启服务生效:

    sudo systemctl daemon-reloadsudo systemctl restart docker
  2. 登录 Docker 客户端

    在终端中输入以下命令,按照提示输入您在 Docker Hub 上注册的用户名和密码,完成登录操作:

    docker login -u <username>

    输入密码或者docker hub的PAT,我觉得使用密码就够了。

  3. 镜像打标签

    如果您在本地对镜像进行了修改或优化,可以为镜像添加合适的标签,以便更好地管理和识别。使用以下命令为镜像打标签,其中“0123456789ab”是镜像的 ID(可通过 docker images 命令查看):

    docker tag 0123456789ab username/myimage:v1

    注释: 也可以直接在最开始的部分直接打标签:docker commit fusion username/myimage:v1

(三)执行上传操作与进度监控

  1. 上传镜像至 Docker Hub

    使用以下命令将本地镜像上传至 Docker Hub,开始上传过程:

    docker push username/myimage:v1
  2. 监控上传进度

    在上传过程中,Docker 客户端会显示上传进度条,实时展示上传速度和完成情况,您可以根据进度条了解上传的实时状态,确保镜像完整、准确地上传到远程仓库。上传时间一般需要十几分钟,视容器大小决定。

  3. 验证上传结果

    上传成功后,打开浏览器访问 Docker Hub 官网,登录您的账号,在“Repositories”页面查看镜像是否成功出现在您的仓库中,确认镜像上传完成。

    Docker系列(七):实战!手把手教你上传私有镜像到Docker Hub并远程部署 (以Fusion为例)_dockerhub上传镜像

  4. 退出登陆

    docker logout

三、Docker Hub 镜像的远程部署与应用

(一)远程服务器环境配置与镜像拉取

  1. 配置远程服务器环境

    确保远程服务器上已正确安装 Docker 环境,可通过以下命令检查 Docker 是否安装及版本信息:

    docker --version
  2. 登录 Docker 客户端

    在远程服务器上使用以下命令登录 Docker Hub 账号:

    docker login
  3. 拉取镜像

    使用以下命令从 Docker Hub 拉取所需镜像到远程服务器:

    docker pull username/myimage:v1
  4. 验证镜像拉取

    使用以下命令查看镜像是否成功拉取到远程服务器上:

    docker images

(二)容器启动与运行参数设置

  1. 启动容器

    使用以下命令启动容器,指定镜像名称和版本标签,其中“-itd”参数表示容器在后台运行,“–name”参数为容器指定一个名称“vins_fusion”:

    docker run -itd \\ -v /tmp/.X11-unix:/tmp/.X11-unix \\ -e DISPLAY=$DISPLAY \\ --network host --privileged=true \\ --name vins_fusion \\ yicichenggong/vins_fusion:v1 \\ /bin/bash
  2. 验证容器状态

    使用以下命令查看容器是否成功启动并运行,检查容器的状态信息:

    docker ps -a

(三)部署后的监控与维护

  1. 监控容器运行状态

    • 使用以下命令实时查看容器的资源使用情况,包括 CPU、内存、网络等指标:

      docker stats vins_fusion
    • 查看容器日志:使用以下命令查看容器日志,及时发现应用运行中的问题:

      docker logs vins_fusion
  2. 容器管理

    • 停止容器:如果需要停止正在运行的容器,可以使用以下命令:

      docker stop vins_fusion
    • 启动已停止的容器:使用以下命令重新启动已停止的容器:

      docker start vins_fusion
    • 删除容器:当容器不再需要时,可以使用以下命令删除容器:

      docker rm vins_fusion
  3. 镜像更新与维护

    • 当应用更新时,在本地重新构建或打包镜像,并重复上传至 Docker Hub 的过程。

    • 在远程服务器上,使用以下命令更新镜像:

      docker pull username/myimage:v2

      然后重新启动容器以应用更改,确保部署的应用始终保持最新和稳定的状态。


结 束 语


能够看到这里的观众老爷,无疑是对up的最大肯定和支持,在此恳求各位观众老爷能够多多点赞、收藏和关注。在这个合集中,未来将持续给大家分享关于Docker的多种常见开发实用操作。未来也将继续分享Docker、conda、ROS等等各种实用干货。感谢大家支持!


往期回顾 — 往期专栏 和 系列博文

往期专栏: Ubuntu系列

本期专栏: Docker系列

Docker系列(一):从依赖冲突到标准化交付!容器原理解析×SLAM跨平台实战×10分钟极速部署指南

Docker系列(二):从零构建容器环境|服务自启配置×镜像源加速×免sudo提权×避坑手册

Docker系列(三):深度剖析Dockerfile与图形化容器实战 — 3种容器构建方法对比与性能调优

Docker系列(四):容器操作全栈技术指南 — 从入门到生产级管控

Docker系列(五):ROS容器化三叉戟 — 从X11、Wayland到DockerFile实战全解析

Docker系列(六):一站式搞定ORB_SLAM3容器化部署!ROS2环境+依赖避坑+EuRoc测试