美文网首页
部署私有容器仓库

部署私有容器仓库

作者: 003003 | 来源:发表于2018-09-20 15:04 被阅读0次

master节点上操作

创建自签名证书
# cd ~
# mkdir  certs
# cd certs
# cp /opt/mesosphere/packages/openssl--8042860cf76ca9ef965af9ee6d59acace266356e/etc/ssl/openssl.cnf ./openssl.cnf
# sed -i "/\[ v3_ca \]/a subjectAltName = IP:192.168.0.1" ./openssl.cnf
# openssl req -config ./openssl.cnf -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt -subj "/C=CN/ST=SH/L=Shang Hai/O=example.com/CN=192.168.0.1"

此处IP“192.168.0.1”为虚拟IP,仅在DCOS集群内部可见

拷贝证书和私钥到所有Agent节点
# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum install -y jq
# MESOS_AGENTS=$(curl -sS 192.168.22.191:5050/slaves | jq '.slaves[] | .hostname' | tr -d '"'); 
# for i in $MESOS_AGENTS; do ssh "$i" -oStrictHostKeyChecking=no "sudo mkdir --parent /etc/privateregistry/certs/"; done 
# for i in $MESOS_AGENTS; do scp -o StrictHostKeyChecking=no ./domain.* "$i":~/; done 
# for i in $MESOS_AGENTS; do ssh "$i" -oStrictHostKeyChecking=no "sudo mv ./domain.* /etc/privateregistry/certs/"; done
配置所有Agent节点上的Docker守护程序信任为私有容器仓库创建的自签名证书。
# MESOS_AGENTS=$(curl -sS 192.168.22.191:5050/slaves | jq '.slaves[] | .hostname' | tr -d '"');
# for i in $MESOS_AGENTS; do ssh "$i" -oStrictHostKeyChecking=no "sudo mkdir --parent /etc/docker/certs.d/192.168.0.1"; done 
# for i in $MESOS_AGENTS; do ssh "$i" -oStrictHostKeyChecking=no "sudo cp /etc/privateregistry/certs/domain.crt /etc/docker/certs.d/192.168.0.1/ca.crt"; done 
# for i in $MESOS_AGENTS; do ssh "$i" -oStrictHostKeyChecking=no "sudo systemctl restart docker"; done

部署Registry到DCOS集群

marathon上部署registry
json内容:

{
  "id": "/registry",
  "cmd": null,
  "cpus": 0.5,
  "mem": 128,
  "disk": 0,
  "instances": 1,
  "constraints": [
    [
      "hostname",
      "LIKE",
      "192.168.22.193"
    ]
  ],
  "acceptedResourceRoles": [
    "*"
  ],
  "container": {
    "type": "DOCKER",
    "docker": {
      "forcePullImage": false,
      "image": "registry",
      "parameters": [],
      "privileged": false
    },
    "volumes": [
      {
        "containerPath": "/certs/",
        "hostPath": "/etc/privateregistry/certs/",
        "mode": "RO"
      },
      {
        "containerPath": "/var/lib/registry",
        "hostPath": "/data/docker-registry",
        "mode": "RW"
      }
    ],
    "portMappings": [
      {
        "containerPort": 5000,
        "hostPort": 0,
        "labels": {
          "VIP_0": "192.168.0.1:443"
        },
        "protocol": "tcp",
        "servicePort": 5000
      }
    ]
  },
  "env": {
    "REGISTRY_HTTP_TLS_CERTIFICATE": "/certs/domain.crt",
    "REGISTRY_HTTP_TLS_KEY": "/certs/domain.key",
    "REGISTRY_HTTP_SECRET": "123456secret"
  },
  "healthChecks": [
    {
      "gracePeriodSeconds": 60,
      "intervalSeconds": 60,
      "maxConsecutiveFailures": 3,
      "portIndex": 0,
      "protocol": "TCP",
      "ipProtocol": "IPv4",
      "timeoutSeconds": 20,
      "delaySeconds": 15
    }
  ],
  "labels": {
    "HAPROXY_GROUP": "external"
  },
  "networks": [
    {
      "mode": "container/bridge"
    }
  ],
  "portDefinitions": []
}
在集群内部节点上访问容器仓库
# curl -k https://192.168.0.1/v2/_catalog
{"repositories":[]}
在集群外部访问容器仓库

https://192.168.22.192:5000/v2/_catalog (通过marathon-lb访问)

推送镜像到容器仓库
# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
tomcat                   8.5.32              5808f01b11bf        5 weeks ago         462.5 MB
mesosphere/marathon-lb   latest              3d928337c5fd        6 weeks ago         217.2 MB
# docker tag 5808f01b11bf 192.168.0.1/tomcat:8.5.32
# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
192.168.0.1/tomcat       8.5.32              5808f01b11bf        5 weeks ago         462.5 MB
tomcat                   8.5.32              5808f01b11bf        5 weeks ago         462.5 MB
mesosphere/marathon-lb   latest              3d928337c5fd        6 weeks ago         217.2 MB
# docker push 192.168.0.1/tomcat
# curl -k https://192.168.0.1/v2/_catalog
{"repositories":["tomcat"]}
删除容器仓库的镜像

私有容器仓库宿主机上操作
参考:https://github.com/burnettk/delete-docker-registry-image

# curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null
# chmod a+x /usr/local/bin/delete_docker_registry_image
# echo "export REGISTRY_DATA_DIR=/data/docker-registry/docker/registry/v2" >> /etc/profile
# source /etc/profile
# delete_docker_registry_image --image tomcat

相关文章

  • 部署私有容器仓库

    master节点上操作 创建自签名证书 此处IP“192.168.0.1”为虚拟IP,仅在DCOS集群内部可见 拷...

  • cocoapods创建私有仓库

    利用cocoapods来创建私有仓库步骤 1.创建一个管理私有仓库的容器 2.制作私有仓库 3.验证私有仓库并加入...

  • Docker搭建私有镜像仓库

    拉取私有仓库镜像 启动私有仓库容器 让docker信任私有仓库地址 修改daemon.json 添加如下内容,保存...

  • Docker私有仓库

    一、Docker私有仓库搭建与配置 1、拉取私有仓库镜像 2、启动私有仓库容器 3、打开浏览器输入地址http:/...

  • docker创建私有仓库

    一、下载私有仓库包 二、导入私有仓库镜像并运行一个容器 三、重启docker容器 四、测试 五、打标签 六、上传镜...

  • Docker 私有仓库

    私有仓库 安装私有仓库 默认情况下,仓库会被创建在容器的 /tmp/registry 下。可以通过 -v 参数来将...

  • docker register 私有仓库部署 - http模式

    原创内容,转载请注明出处 前言 有些朋友看完了我的kubernetes部署文章之后,咨询关于私有仓库的部署。私有仓...

  • 使用Dockerfile部署项目

    使用Dockerfile部署项目 以Nginx部署项目为例 Docker安装及Docker私有仓库部署流程[htt...

  • docker搭建私有仓库

    1.拉取私有镜像 docker pull registry 2.启动私有仓库容器 docker run -di -...

  • Docker创建私有仓库以及DockerMaven插件

    Docker创建私有仓库 1、搜索registry镜像 2.拉取镜像 3.创建私有仓库容器 打开浏览器 输入地址h...

网友评论

      本文标题:部署私有容器仓库

      本文链接:https://www.haomeiwen.com/subject/ucignftx.html