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 账号
(一)访问官网与填写信息
-
注册Gmail(个人建议使用google mail注册Docker hub)
Google Mail: Google Mail 官网
注释: 注册前,最好修改一下电脑的系统语言(改为英语),定位改为美国,增大注册成功几率。现在注册Google mail审查较为严格,识别到国内ip容易注册失败。
-
注册Docker hub
Docker hub: Docker hub官网
打开 Docker 官方网站,进入注册页面。在这里,需要准确填写个人或组织的相关信息,包括但不限于邮箱地址、用户名以及密码等必要内容。这些基本信息将构成您在 Docker Hub 上唯一的身份标识,确保您后续能够顺利登录并使用平台的各项功能。
注释: 这里我觉得最恶心得就是取名字,总是重名,请重新命名!可以提前想一个比较好记的名字,别忘了账户和密码!
(二)验证与账号激活
完成信息填写后,Docker 系统会向您提供的邮箱发送一封验证邮件。及时登录邮箱,找到该邮件并点击其中的验证链接,即可激活您的 Docker Hub 账号。这一步骤是保障账号安全性和真实性的关键环节,只有通过验证的账号才能正式开启在 Docker Hub 上的操作之旅。
二、镜像上传至 Docker Hub — 以fusion容器为例,这是我自己创建的容器
(一)将现有容器打包成镜像
-
查看现有容器
在终端中输入以下命令,查看本地所有容器及其详细信息,找到名为“fusion”的容器:
docker ps -a
-
打包容器为镜像
使用以下命令将名为“fusion”的容器打包成镜像。这里的“username”替换为您在 Docker Hub 上的用户名,“myimage”是您为镜像指定的名称:
# 以下两种命名方式均可docker commit fusion username/myimagedocker commit fusion myimage
-
验证镜像创建
使用以下命令查看新创建的镜像是否在本地镜像列表中,确认镜像已成功创建:
docker images
(二)登录 Docker 客户端与镜像打标签
-
修改配置
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
-
登录 Docker 客户端
在终端中输入以下命令,按照提示输入您在 Docker Hub 上注册的用户名和密码,完成登录操作:
docker login -u <username>
输入密码或者docker hub的PAT,我觉得使用密码就够了。
-
镜像打标签
如果您在本地对镜像进行了修改或优化,可以为镜像添加合适的标签,以便更好地管理和识别。使用以下命令为镜像打标签,其中“0123456789ab”是镜像的 ID(可通过
docker images
命令查看):docker tag 0123456789ab username/myimage:v1
注释: 也可以直接在最开始的部分直接打标签:
docker commit fusion username/myimage:v1
。
(三)执行上传操作与进度监控
-
上传镜像至 Docker Hub
使用以下命令将本地镜像上传至 Docker Hub,开始上传过程:
docker push username/myimage:v1
-
监控上传进度
在上传过程中,Docker 客户端会显示上传进度条,实时展示上传速度和完成情况,您可以根据进度条了解上传的实时状态,确保镜像完整、准确地上传到远程仓库。上传时间一般需要十几分钟,视容器大小决定。
-
验证上传结果
上传成功后,打开浏览器访问 Docker Hub 官网,登录您的账号,在“Repositories”页面查看镜像是否成功出现在您的仓库中,确认镜像上传完成。
-
退出登陆
docker logout
三、Docker Hub 镜像的远程部署与应用
(一)远程服务器环境配置与镜像拉取
-
配置远程服务器环境
确保远程服务器上已正确安装 Docker 环境,可通过以下命令检查 Docker 是否安装及版本信息:
docker --version
-
登录 Docker 客户端
在远程服务器上使用以下命令登录 Docker Hub 账号:
docker login
-
拉取镜像
使用以下命令从 Docker Hub 拉取所需镜像到远程服务器:
docker pull username/myimage:v1
-
验证镜像拉取:
使用以下命令查看镜像是否成功拉取到远程服务器上:
docker images
(二)容器启动与运行参数设置
-
启动容器
使用以下命令启动容器,指定镜像名称和版本标签,其中“-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
-
验证容器状态
使用以下命令查看容器是否成功启动并运行,检查容器的状态信息:
docker ps -a
(三)部署后的监控与维护
-
监控容器运行状态:
-
使用以下命令实时查看容器的资源使用情况,包括 CPU、内存、网络等指标:
docker stats vins_fusion
-
查看容器日志:使用以下命令查看容器日志,及时发现应用运行中的问题:
docker logs vins_fusion
-
-
容器管理:
-
停止容器:如果需要停止正在运行的容器,可以使用以下命令:
docker stop vins_fusion
-
启动已停止的容器:使用以下命令重新启动已停止的容器:
docker start vins_fusion
-
删除容器:当容器不再需要时,可以使用以下命令删除容器:
docker rm vins_fusion
-
-
镜像更新与维护:
-
当应用更新时,在本地重新构建或打包镜像,并重复上传至 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测试