引言
本文用于记录如何在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服务
