3.7镜像的发布

在本节中,我们将把我们构建的镜像发布到镜像仓库

下面我们提供3中镜像发布方式:

  • 直接发布镜像到Docker Hub

  • 间接发布镜像到Docker Hub(通过Dockerfile间接发布,推荐使用该方式)

  • 发布到私有Docker仓库

Docker Hub:类似于Github的Docker 仓库网站

前提条件

拥有Docker Hub账号,若没有Docker Hub账号,请到docker官网注册

拥有Github账号,若没有Github账号,请到Github官网)注册

主机已安装git,若未安装git,可使用命令yum install git安装

直接发布镜像到Docker Hub

1.登录docker hub账号

[root@master vagrant]# 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: moluo22h
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

2.push镜像到Dockers hub仓库

注意:push的镜像名称必须为 {自己的Docker Hub id}/IMAGE,如示例中的moluo22h/hello-world

间接发布镜像到Docker Hub

本小节中,我们将使用Github托管我们的Dockerfile文件,通过建立Docker hub和Gitlab的关联,实现Docker hub自动拉取Dockerfile变更,自动编译Dockerfile成镜像并上传指docker hub中。具体步骤如下:

1.点击头像下的“Account Settings”→“Linked Accounts”,使用Docker hub连接Github

2.主页点击"Create Repository +"新建Docker Repository

注意:第4步中的hello-world项目,是提前在Github中建立的名为“hello-world”的项目,如果未创建该项目,请先到Github中创建

3.push带有Dockerfile文件的代码到Github仓库,Docker Hub将自动监听Github的代码更新,编译并上传镜像到Docker Hub,编译过程可在镜像的“Timeline”中查看

发布到私有Docker仓库

前提条件

两台网络互通的虚机,一台作为服务器(示例IP:192.168.61.61),一台作为客户端

两台虚机都已安装docker

服务器搭建

1.在服务器虚机中,使用如下命令创建一个私有仓库容器并查看。

通过如上命令,我们已经搭建好了一个docker私有服务器。

客户端上传镜像到私有服务器

1.在客户端虚机中,编辑docker配置文件/etc/docker/daemon.json,如果没有daemon.json,请先新建。

提示:不要把daemon.json文件名写错,如果你写成deamon.json,那么将是一件很糟糕的事。

在daemon.json文件中添加如下json,配置我们搭建的docker服务器为可信任的docker仓库

可选:(不推荐使用,仅作参考)

除json添加配置方式外,我们还可以通过修改启动文件的方式添加配置。配置方式如下:

编辑/lib/systemd/system/docker.service文件,在ExecStart=/usr/bin/dockerd后添加--insecure-registry 192.168.61.61:5000。如下:

2.在客户端虚机中,依此执行一下两条命令,重启docker。

3.在客户端虚机中,push镜像到私有仓库。

注意:镜像名称格式为{服务器ip地址}:5000/{镜像名}

4.查看镜像是否上传成功,返回json中存在hello-world,即说明上传成功。

参考

docker官方-Deploy a registry server

Last updated

Was this helpful?