乐趣区

基于Centos7快速搭建Docker私有镜像仓库

基于 Centos7 快速搭建 Docker 私有镜像仓库

环境准备

快速安装 Docker
# 基于脚本方式快速安装 Docker

curl https://releases.rancher.com/install-docker/18.06.sh | sh

# 其他方式自行 百度
配置 Docker
  • vi /etc/docker/daemon.json
  • 输入以下内容:

{"registry-mirrors": ["https://ndy7ld6k.mirror.aliyuncs.com","http://abcd1234.m.daocloud.io"],    
 "dns": ["8.8.8.8","8.8.4.4"],
 "hosts": ["tcp://0.0.0.0:2378","unix:///var/run/docker.sock"],
 "log-driver":"json-file",
 "log-opts":{"max-size" :"500m","max-file":"3"}
}
配置 docker 开机启动

# 配置 docker 开机启动
systemctl enable docker

# 启动 docker
systemctl start docker

# 查看 docker 状态
docker info

# 其他帮助命令 docker --help

开始搭建 私有仓库

拉取 docker 官方私有仓库镜像
docker pull registry:2.5
查看镜像是否拉取成功
docker images

— 上图所示,便是拉取镜像成功

创建私有仓库的密钥
  • 创建一个存放密钥文件的文件夹
mkdir -p /usr/docker-register/auth/

# -p 生成多级目录
  • 开始生成密钥文件
docker run --entrypoint htpasswd registry:2.5 -Bbn root 123456  >> /usr/docker-register/auth/htpasswd

# root 为账号 123456 为密码

# 查看密钥文件
cat /usr/docker-register/auth/htpasswd
> 如下:> root:$2y$05$uOvrvlH3147dTZFRjtnVR.cuk/CI9YRjzQPjMv7mMcsac4Z1cq1V2
启动私有仓库

# docker run -d -p 5000:5000 --restart=always  --name=registry\
  -v /usr/docker-register/auth/:/auth/ \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v /opt/registry-var/:/var/lib/registry/ \
registry:2.5
查看私有仓库是否启动成功
docker ps -a

如上图所示:
status:UP 表示该镜像启动成功
ports: 表示端口的映射 5000 -> 5000

访问私有仓库

打开浏览器输入 URL:{ip}:{port}/v2/_catalog
http://192.168.182.101:5000/v2/_catalog

输入上面配置的账号密码即可, 最终结果如下:

向私有仓库中上传镜像

以下以 DockerHub 中 hello-world 镜像为例

本地先从 DockerHub 中拉取该镜像

有关于 DockerHub 上面所有的镜像在 DockerHub 中都详细的帮助

docker pull hello-world
运行 hello-world 镜像
docker run hello-world

# 如果成功显示以下文本说明运行成功:Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/


# 当然也可以通过上面所述的 docker ps -a 来查看
开始上传镜像到私有仓库
  • 先查看镜像的信息
docker images
  • 给 要上传的镜像 hello-world 打标签
docker tag hello-world:latest 192.168.182.101:5000/my-hello-world:1.0
# docker tag [参数 1] [参数 2]
# 参数 1:要上传镜像仓库的镜像,用镜像名称和版本号来描述 如:hello-world:latest
# 参数 2:即将上传到镜像仓库的位置 格式:镜像地址{ip}:{port}/ 新的镜像名称: 版本号
  • 登录到镜像仓库中
docker login 192.168.182.101:5000

但是如果出现以下报错,需要修改一下 docker 的配置文件就是上面创建的 daemon.json

  • 编辑 daemon.json 配置文件
vi /etc/docker/daemon.json

在该配置文件中追加以下内容,重启 docker

“insecure-registries”:[“192.168.182.101:5000”]

systemctl daemon-reload
systemctl restart docker

# 注意执行完上面步骤之后需要重新打标签
docker tag hello-world:latest 192.168.182.101:5000/my-hello-world:1.0
推送到私有仓库
docker push 192.168.182.101:5000/my-hello-world:1.0
查看镜像是否推送成功

拉取私有仓库镜像
docker pull 192.168.182.101:5000/my-hello-world:1.0
运行
docker run 192.168.182.101:5000/my-hello-world:1.0
  • 结果如下:

同上面一模一样, ok 到此结束!

参考链接

退出移动版