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 dockerfile
,context
里面放三个文件:
- 压缩包
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