Administrator
发布于 2025-05-03 / 0 阅读
0
0

RedHat7.6安装Docker搭建DockerRegistry镜像私服

引言

本文用于记录如何在RedHat7.6虚拟机上安装Docker搭建DockerRegistry镜像私服。

环境配置

操作系统:redHat7.6

docker版本:docker-20.10.14

下载安装包

下载并解压

wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.14.tgz

tar -zxvf docker-20.10.14.tgz

复制到/usr/bin/目录

cp docker/* /usr/bin/

配置开机启动

vim /etc/systemd/system/docker.service

输入以下内容

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process

# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

添加可执行权限并重载

chmod +x /etc/systemd/system/docker.service

systemctl daemon-reload

systemctl enable docker.service

systemctl start docker

systemctl statut docker

安装Docker

如下图安装成功。

基于 Docker 安装 Registry

拉取腾讯云Registry镜像:

docker pull ccr.ccs.tencentyun.com/library/registry

选择一足够大的目录,例如

mkdir -p /data/registry

cd /data/registry

启动Registry容器

docker run -d \
  --name registry \
  -p 5000:5000 \
  -v /data/registry:/var/lib/registry \
  -e REGISTRY_HTTP_HEADERS_ACCESS-CONTROL-ALLOW-ORIGIN='["http://192.168.1.204:8080"]' \
  -e REGISTRY_HTTP_HEADERS_ACCESS-CONTROL-ALLOW-METHODS='["HEAD","GET","OPTIONS","DELETE"]' \
  -e REGISTRY_HTTP_HEADERS_ACCESS-CONTROL-ALLOW-HEADERS='["Authorization","Content-Type"]' \
  -e REGISTRY_HTTP_HEADERS_ACCESS-CONTROL-MAX-AGE='["1728000"]' \
  ccr.ccs.tencentyun.com/library/registry

验证是否启动成功

curl http://localhost:5000/v2/_catalog

验证是否启动成功

http://192.168.1.204:5000/v2/

配置 Docker Registry 客户端

vim /etc/docker/daemon.json

{
    "registry-mirrors": ["https://3xxdqqmp.mirror.aliyuncs.com"],
    "insecure-registries": ["192.168.1.204:5000"]
}

重启docker

systemctl daemon-reload

systemctl restart docker

docker info

如下图:

部署 Registry WebUI

Windows本地构建镜像

docker pull joxit/docker-registry-ui

docker tag joxit/docker-registry-ui crpi-0swe8dzdgqldwblh.cn-chengdu.personal.cr.aliyuncs.com/yekunlee/yekunlee:docker-registry-ui

docker push crpi-0swe8dzdgqldwblh.cn-chengdu.personal.cr.aliyuncs.com/yekunlee/yekunlee:docker-registry-ui

登录并拉取阿里云私有镜像

docker login --username=yekunlee crpi-0swe8dzdgqldwblh.cn-chengdu.personal.cr.aliyuncs.com

docker pull crpi-0swe8dzdgqldwblh.cn-chengdu.personal.cr.aliyuncs.com/yekunlee/yekunlee:docker-registry-ui

执行如下命令

docker run -d \
  --name registry-ui \
  --restart=always \
  -p 8080:80 \
  -e REGISTRY_URL=http://192.168.1.204:5000 \
  -e DELETE_IMAGES=true \
  crpi-0swe8dzdgqldwblh.cn-chengdu.personal.cr.aliyuncs.com/yekunlee/yekunlee:docker-registry-ui

如下图,启动成功

IDEA配置

上传镜像到私服

idea下载代码后,先打包,生成target目录下的jar包,

再新增dockfile,如下:

# 使用国内镜像 OpenJDK 8 镜像作为基础镜像
FROM swr.cn-south-1.myhuaweicloud.com/library/openjdk:8-jdk

#设置作者名称
LABEL authors="yekunlee"

VOLUME /tmp/tcpserverdemo

# 设置工作目录
WORKDIR /app

# 拷贝 Spring Boot JAR 文件到镜像中
COPY ./target/tcpserverdemo-0.0.1-SNAPSHOT.jar /app/tcpserverdemo.jar

# 暴露应用端口(根据 Spring Boot 配置,默认是 8080)
EXPOSE 8090

# 启动命令,运行 Spring Boot JAR 文件
ENTRYPOINT ["java", "-jar", "/app/tcpserverdemo.jar"]

构建成果

成果检验

访问8080web服务


评论