docker私有化仓库部署及dockerfile示例

Docker私有仓库搭建与Elasticsearch部署
本文详细介绍了如何使用yum安装Docker,配置Docker为开机自启并启动服务。随后,深入讲解了如何部署私有化的Docker仓库,包括下载registry镜像、准备SSL证书、配置证书及运行registry容器。最后,提供了Elasticsearch的Dockerfile示例,展示了如何构建并推送至私有仓库。

1. 安装

# 安装
yum install -y docker
# 开机自启
systemctl enable docker
# 启动
systemctl start docker

2. 部署私有化docker仓库

参考官方文档 https://docs.docker.com/registry/

下载registry镜像
docker pull registry:2
准备证书(目的是能被网络内其它机器访问)

准备cnf文件,可直接修改/etc/pki/tls/openssl.cnf文件,也可将openssl.cnf文件copy出来修改在openssl命令中指定文件位置。

此处直接修改openssl.cnf文件,找到v3_ca段,在后面新增一段:

# 段落名称随意
[alt_names]
# 设置本机ip,客户端将能够通过配置的ip访问registry,
# 如果有多个ip,或者registry部署在虚拟机,需要通过宿主机端口转发,可以配置多个ip
IP.1=xx.xx.xx.xx
IP.2=xx.xx.xx.xx

v3_ca段中将subjectAltName引用上面新增的段落:

subjectAltName=@alt_names

选择证书存放路径(任意位置):

cd /etc/docker/certs.d/ca

生成证书:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 5000 \
            -keyout registry.key -out registry.crt

创建并启动registry容器:

docker run -d --restart=always --name registry \
           -v /etc/docker/certs.d/ca:/certs \
           -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
           -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \ 
           -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \
           -p 443:443 registry:2

本机可直接localhost:443访问,无需证书。

其它机器将生成的registry.crt放到/etc/docker/certs.d/{registry ip:port}/路径下即可通过{registry ip:port}访问。

3. dockerfile 示例

参考官方文档 https://docs.docker.com/engine/reference/builder/

简易的elasticsearch dockerfilecontext里面放三个文件:

  • 压缩包elasticsearch-6.2.2.tar.gz
  • 配置文件路径config/
  • Dockerfile文件
FROM java:8-jre
MAINTAINER lvjc
# "."是从`context`目录开始
COPY ./elasticsearch-6.2.2.tar.gz /usr/local/
RUN useradd -r elastic && \
    # 最好用-C指定解压目标路径,因为解压后可能不与原文件在相同路径下
    tar -zxvf /usr/local/elasticsearch-6.2.2.tar.gz -C /usr/local/ && rm -f /usr/local/elasticsearch-6.2.2.tar.gz && \
    rm -rf /usr/local/elasticsearch-6.2.2/config
# 注意 COPY 只复制目录下的所有内容,不复制目录本身
COPY ./config /usr/local/elasticsearch-6.2.2/config/
RUN chown -R elastic:elastic /usr/local/elasticsearch-6.2.2
EXPOSE 9200 9300
USER elastic
CMD /usr/local/elasticsearch-6.2.2/bin/elasticsearch

现在可以build然后push到私有仓库了

# 进入 context 所在路径
cd /data/docker/build-context/elasticsearch
docker build -t localhost:443/elasticsearch:6.2.2 .
docker push localhost:443/elasticsearch:6.2.2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值