【Docker教程】Docker 镜像发布

介绍

如果我们自己在本地制作一个镜像,想提供给他人使用或者作为自己的日常学习,那么我们可以把我们制作的镜像发布到DockerHub上,这样不管是其它人还是我们自己就可以直接使用 docker pull 命令获取到我们发布的镜像,这样我们再也不用担心一不小心把本地镜像删除了;
当然发布到DockerHub上的镜像是公开的,每个人都能获取,如果我们希望我们发布的镜像是私有的只有我们自己可以看见,我们可以利用官方提供的registry镜像来搭建自己私有的镜像仓库,当然我们也还可以使用Harbor来搭建企业级私有仓库服务器

镜像发布到 DockerHub

镜像发布到 DockerHub,首先我们需要注册 DockerHub 账号,假设现在大家都有了DokcerHub的账号,那么接下来我们在本地制作一个自己的镜像

创建一个getip目录,进入到getip目录,编写Dockerfile

1
2
3
4
5
$ mkdir getip

$ cd getip

$ vim Dockerfile

Dokcerfile文件中内容

1
2
3
4
5
6
7
FROM ubuntu:16.04

RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["curl","-s","http://ip.cn"]

在getip目录执行 docker build 命令构建镜像

1
2
# 构建镜像(注意仓库名必须是你注册的 dockerhub 的用户名)
docker build -t sqgulj/get-ip:1.0 .

查看构建的镜像

1
2
3
$ docker images;
REPOSITORY TAG IMAGE ID CREATED SIZE
sqgulj/get-ip 1.0 e381e0c1b380 3 hours ago 129MB

在终端使用 docker login 命令,输入自己的DockerHub账号信息进行登录

1
2
3
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 (sqgulj):

使用 docker push 命令把我刚制作的镜像推送到DockerHub

1
2
3
4
5
6
7
8
9
$ docker push sqgulj/get-ip
The push refers to repository [docker.io/sqgulj/get-ip]
83dc3de4596c: Pushed
db584c622b50: Mounted from library/ubuntu
52a7ea2bb533: Mounted from library/ubuntu
52f389ea437e: Mounted from library/ubuntu
88888b9b1b5b: Mounted from library/ubuntu
a94e0d5a7c40: Mounted from library/ubuntu
1.0: digest: sha256:1a3fa4e93464054c2f8050d6f846cccbe943c5e9f6d67f98f2013a32652f3f0b size: 1568

浏览器登录到DockerHub查看我们推送的镜像