基于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

clipboard.png

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

创建私有仓库的密钥
  • 创建一个存放密钥文件的文件夹
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

clipboard.png

如上图所示:
status:UP 表示该镜像启动成功
ports: 表示端口的映射 5000 -> 5000
访问私有仓库
打开浏览器输入URL:{ip}:{port}/v2/_catalog
http://192.168.182.101:5000/v2/_catalog

基于Centos7快速搭建Docker私有镜像仓库_第1张图片

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

clipboard.png

向私有仓库中上传镜像

以下以 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

clipboard.png

  • 编辑 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
查看镜像是否推送成功

clipboard.png

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

基于Centos7快速搭建Docker私有镜像仓库_第2张图片

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

参考链接

你可能感兴趣的:(镜像,docker)