构建自己的 DockerHub
前面我们使用的 Docker Hub 是由 Docker 官方提供的,我们也可以搭建自己的 Docker Hub ,搭建方式也很容器,因为 Docker 官方已经将 Docker 注册服务器做成镜像了,我们直接 pull 下来运行即可,没有没很酷!。具体步骤如下:
- 拉取镜像
运行如下命令拉取registry官方镜像:
docker pull registry
- 运行
接下来运行如下命令将registry运行起来,如下:
d
ocker run -itd --name registry -p 5000:5000 2e2f252f3c88
运行成功后,我们就可以将自己的镜像提交到registry上了,如下:
这里需要注意的是,本地镜像的命名按照 registryHost:registryPort/imageName:tag
的格式命名。
容器运行在宿主机上,如果外网能够访问容器,才能够使用它提供的服务。本文就来了解下容器中的网络知识。
暴露网络端口
在前面的文章中,我们已经有用过暴露网络端口相关的命令了,即 -p
参数,实际上,Docker 中涉及暴露网络端口的参数有两个,分别是 -p
和 -P
。下面分别来介绍。
- -P
使用 -P
,Docker 会在宿主机上随机为应用分配一个未被使用的端口,并将其映射到容器开放的端口,以 Nginx 为例,如下:
可以看到,Docker 为应用分配了一个随机端口 32768 ,使用该端口即可访问容器中的 nginx(http://lcalhost:32768)。
- -p
-p
参数则有几种不同的用法:
- hostPort:containerPort
这种用法是将宿主机端口和容器端口绑定起来,如下用法:
如上命令表示将宿主机的80端口映射到容器的80上,第一个 80 是宿主机的 80 ,第二个 80 是容器的 80 。
- ip:hostPort:containerPort
这种是将指定的 ip 地址的端口和容器的端口进行映射。如下:
将 192.168.0.195 地址的80端口映射到容器的80端口上。
- ip::containerPort
这种是将指定 ip 地址的随机端口映射到容器的开放端口上,如下:
总结
本文主要向大家介绍了 DockerHub 和容器网络,DockerHub 是我们容器的集散中心,网络则使我们的容器有办法对外提供服务。