基于 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 到此结束!
参考链接