跳到主要内容

dockerhub-cangku

如何上传镜像到dockerhub镜像仓库,可以供大家公开访问呢

将Docker镜像上传到Docker Hub以供公开访问,可以通过以下步骤实现:

1. 创建Docker Hub账户

如果你还没有Docker Hub账户,首先需要创建一个。访问 Docker Hub 并注册一个新账户。

2. 登录Docker Hub

在你的终端或命令行中,使用以下命令登录到Docker Hub:

docker login

输入你的Docker Hub用户名和密码完成登录。

3. 构建Docker镜像

如果你还没有构建好Docker镜像,需要先构建一个。假设你的项目目录中有一个 Dockerfile,可以使用以下命令构建镜像:

docker build -t <your-username>/<your-repo-name>:<tag> .

例如,如果你的Docker Hub用户名是 myusername,仓库名是 myapp,标签是 v1.0,命令如下:

docker build -t myusername/myapp:v1.0 .

4. 标记镜像(可选)

如果你已经有一个本地镜像,并且需要将其标记为你的Docker Hub镜像,可以使用以下命令:

docker tag <local-image>:<tag> <your-username>/<your-repo-name>:<tag>

例如:

docker tag mylocalimage:latest myusername/myapp:v1.0

5. 推送镜像到Docker Hub

使用以下命令将镜像推送到Docker Hub:

docker push <your-username>/<your-repo-name>:<tag>

例如:

docker push myusername/myapp:v1.0

6. 设置镜像仓库为公开

默认情况下,新创建的Docker Hub仓库是私有的。要将仓库设置为公开以便其他人可以访问:

  1. 登录到 Docker Hub
  2. 在你的个人资料中找到你刚刚创建的仓库。
  3. 点击仓库名称进入仓库详情页面。
  4. 在仓库详情页面的右上角,点击“Settings”(设置)。
  5. 在设置页面中,找到“Repository visibility”(仓库可见性)部分。
  6. 选择“Public”(公开)选项,并保存更改。

7. 验证

你可以通过访问 https://hub.docker.com/r/<your-username>/<your-repo-name> 来验证你的镜像是否已经上传成功并公开。

例如:

https://hub.docker.com/r/myusername/myapp

示例完整流程

假设你的Docker Hub用户名是 myusername,仓库名是 myapp,标签是 v1.0,以下是一个完整的流程示例:

# 登录Docker Hub
docker login

# 构建Docker镜像
docker build -t myusername/myapp:v1.0 .

# 推送镜像到Docker Hub
docker push myusername/myapp:v1.0

# 设置仓库为公开(在Docker Hub网站上进行)

通过这些步骤,你就可以将Docker镜像上传到Docker Hub并使其公开供大家访问。

实际测试

[root@docusaurus-wiki ~]#docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: onlyonexl
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@docusaurus-wiki ~]#


    docker tag home2.0:latest onlyonexl/homePlus:v2.0

docker push onlyonexl/homePlus:v2.0




[root@docusaurus-wiki ~]#docker tag home2.0:latest onlyonexl/homePlus:v2.0
Error parsing reference: "onlyonexl/homePlus:v2.0" is not a valid repository/tag: invalid reference format: repository name must be lowercase
[root@docusaurus-wiki ~]#

image-20240603073035569

docker tag home2.0:latest onlyonexl/home:v2.0
docker push onlyonexl/home:v2.0

image-20240603073253350

image-20240603073332827

image-20240603073404956

image-20240603073444149

docker pull onlyonexl/home:v2.0
  • 运行测试

先删除老刚才tag好的镜像:

docker rmi onlyonexl/home:v2.0

image-20240603073555467

  • 再从dockerhub拉取镜像
docker pull onlyonexl/home:v2.0

image-20240603073715543

可以看到,拉取成功。

  • 这里删除老容器,再次运行新容器,观察是否正常
[root@docusaurus-wiki ~]#docker rm -f diy-index-home
diy-index-home
[root@docusaurus-wiki ~]#docker run -p 12445:12445 -d --name=diy-index-home --restart=always onlyonexl/home:v2.0
0924bd211a25e7ef30befb4a3859b01380ea954f4774455e2dffcfe058a3c1d4
[root@docusaurus-wiki ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0924bd211a25 onlyonexl/home:v2.0 "docker-entrypoint.s…" 11 seconds ago Up 8 seconds 0.0.0.0:12445->12445/tcp diy-index-home

访问测试:

http://onedayxyy.cn/

image-20240603074001836

代码汇总

#拉取并运行容器
docker run -p 12445:12445 -d --name=diy-index-home --restart=always onlyonexl/home:v2.0

#域名访问
http://onedayxyy.cn/ #能正常访问
https://onedayxyy.cn/