前两章介绍了Docker的容器和镜像部分,那么这一章就开始介绍仓库
1.仓库
仓库(Repository)是集中存放镜像的地方。 一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓 库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 dl.dockerpool.com/ubuntu 来说, dl.dockerpool.com 是注册服务器地址, ubuntu 是仓库名。 大部分时候,并不需要严格区分这两者的概念。
1.1 DockerHub
1.1.1 什么是Docker Hub
目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了超过 15,000 的镜像。大部分需求,都可以通过在 Docker Hub 中直接下载镜像来实现。 登录 可以通过执行 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。 注册成功后,本地用户目录的 .dockercfg 中将保存用户的认证信息。 基本操作 用户无需登录即可通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本 地。 例如以 centos 为关键词进行搜索:
[root@base ~]# docker search centos
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/centos The official build of CentOS. 7292 [OK]
docker.io docker.io/kasmweb/centos-7-desktop CentOS 7 desktop for Kasm Workspaces 24
docker.io docker.io/couchbase/centos7-systemd centos7-systemd images with additional deb... 4 [OK]
docker.io docker.io/continuumio/centos5_gcc5_base 3
docker.io docker.io/dokken/centos-7 CentOS 7 image for kitchen-dokken 3
docker.io docker.io/dokken/centos-stream-8 2
docker.io docker.io/dokken/centos-stream-9 2
docker.io docker.io/spack/centos6 CentOS 6 with Spack preinstalled 1
docker.io docker.io/spack/centos7 CentOS 7 with Spack preinstalled 1
docker.io docker.io/bitnami/centos-base-buildpack Centos base compilation image 0 [OK]
docker.io docker.io/bitnami/centos-extras-base 0
docker.io docker.io/corpusops/centos centos corpusops baseimage 0
docker.io docker.io/corpusops/centos-bare https://github.com/corpusops/docker-images/ 0
docker.io docker.io/couchbase/centos-69-sdk-build 0
docker.io docker.io/couchbase/centos-69-sdk-nodevtoolset-build 0
docker.io docker.io/couchbase/centos-70-sdk-build 0
docker.io docker.io/couchbase/centos-72-java-sdk 0
docker.io docker.io/couchbase/centos-72-jenkins-core 0
docker.io docker.io/datadog/centos-i386 0
docker.io docker.io/dokken/centos-5 EOL DISTRO: For use with kitchen-dokken, B... 0
docker.io docker.io/dokken/centos-6 CentOS 6 image for kitchen-dokken 0
docker.io docker.io/dokken/centos-8 CentOS 8 image for kitchen-dokken 0
docker.io docker.io/fnndsc/centos-python3 Source for a slim Centos-based Python3 ima... 0 [OK]
docker.io docker.io/spack/centos-stream 0
docker.io docker.io/ustclug/centos Official CentOS Image with USTC Mirror 0
1.1.2 pull---从dockerhub拉取镜像(ubuntu)
[root@base ~]# docker pull ubuntu
Using default tag: latest
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
d19f32bd9e41: Pull complete
Digest: sha256:34fea4f31bf187bc915536831fd0afc9d214755bf700b5cdb1336c82516d154e
Status: Downloaded newer image for docker.io/ubuntu:latest
[root@base ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ssh-server latest 4e28f6e4fc6a 19 hours ago 390 MB
docker.io/ubuntu latest df5de72bdb3b 3 weeks ago 77.8 MB
docker.io/centos 7 eeb6ee3f44bd 11 months ago 204 MB
1.2 设置镜像加速
\
修改为阿里云镜像加速\
1.3 私有仓库
因为某些安全、隐私、网络、法规等等问题,使用公共仓库并不方便,用户可以使用docker提供的私有仓库镜像搭建自己的私有仓库
1.3.1 docker-registry
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库
搭建方法
# 运行本地仓库容器
docker run -dit --name registry --restart=always -p 5000:5000 registry
# 修改docker配置文件
vi /etc/sysconfig/docker
# 添加
# 172.31.36.113 为宿主机局域网IP地址,请自行更改为自己的IP地址
ADD_REGISTRY='--add-registry 192.168.200.201:5000'
INSECURE_REGISTRY='--insecure-registry 192.168.200.201:5000'
vi /etc/docker/daemon.json
# 添加
# 注意上一行后面需增加 ,
"insecure-registries":["192.168.200.201:5000"]
vi /usr/lib/systemd/system/docker.service
删除 $INSECURE_REGISTRY \ 这一行
# 重新加载
systemctl deamon-reload
systemctl restart docker