首页 > 其他分享 >docker离线安装及私人仓库搭建

docker离线安装及私人仓库搭建

时间:2024-07-02 21:11:28浏览次数:25  
标签:compose 离线 echo registry 镜像 docker PORT 搭建

docker离线安装及私人仓库搭建

注意文中 IP PORT根据实际情况自行调整

1. 离线部署

安装目录结构

  • install # 安装文件夹
    • docker-19.03.9.tgz # docker安装文件压缩包 docker下载地址
    • docker-compose-linux-x86_64 # docker-compose文件 docker-compose下载地址
    • daemon.json # docker 配置文件
    • docker.service # docker systemctl 服务的配置文件
    • docker-installer.sh # 一键安装文件
    • docker-uninstaller.sh # 一键卸载文件
  • images # 镜像文件夹
    • joxit_docker-registry-ui_main.tar # 中央仓库管理工具 ui registry-ui
    • registry_2.8.2.tar # 中央仓库管理工具 registry
    • nginx.tar # 测试镜像 nginx
    • docker-compose.yml # 中央仓库管理工具的compose文件
    • repotool_installer.sh # 中央仓库管理工具加载安装运行脚本

1.1 安装包下载

1.2 必要配置文件

  • daemon.json
  • docker.service
# daemon.json
{
    "builder": {
      "gc": {
        "defaultKeepStorage": "20GB",
        "enabled": true
      }
    },
    "debug": false,
    "experimental": false,
    "features": {
      "buildkit": true
    },
    # 私人中央仓库地址,没有设置成 []
    "insecure-registries": [
      "http://IP:PORT"
    ],
    "registry-mirrors": []
}
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \
                -H tcp://0.0.0.0:4243 \
                -H unix:///var/run/docker.sock \
                --selinux-enabled=false \
                --log-opt max-size=1g
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=on-failure
[Install]
WantedBy=multi-user.target

1.3 一键安装脚本

#!/bin/sh
echo 'docker开始安装...'
echo '解压tar包...'
# ------------------------------------
tar -zxvf ./docker-19.03.9.tgz
# ------------------------------------
echo '将docker目录移到/usr/bin目录下...'
cp -p docker/*  /usr/bin/
rm -rf docker
echo '将docker.service 移到/usr/lib/systemd/system/ 目录...'
cp ./docker.service /usr/lib/systemd/system/
echo '重新加载配置文件...'
mkdir /etc/docker/
cp daemon.json /etc/docker/
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
if ! docker -v; then
echo "docker 安装失败..."
exit -1
fi
echo 'docker安装成功...'
 
echo '安装docker-compose...'
# ---------------------------------------------------------------
cp -f ./docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# ---------------------------------------------------------------
echo '添加文件执行权限...'
chmod +x /usr/local/bin/docker-compose
if ! docker-compose -v; then
echo "docker-compose 安装失败..."
exit -1
fi
echo 'docker-compose 安装成功...'

1.4 一键卸载脚本

#!/bin/sh
echo "停止所有容器服务"
docker stop $(docker ps -a -q)
echo "删除所有容器"
docker rm $(docker ps -a -q)
echo "删除docker所有镜像"
docker rmi -f $(docker images -q)
echo "停止docker服务"
systemctl stop docker
echo "删除docker.service..."
rm -rf /usr/lib/systemd/system/docker.service
echo "删除docker文件..."
rm -rf /usr/bin/docker*
echo "重新加载配置文件"
rm -rf /etc/docker
systemctl daemon-reload
echo "卸载成功..."
 
echo "删除docker-compose"
rm -rf /usr/local/bin/docker-compose
echo "卸载成功"一、docker离线安装

2. 私人仓库当搭建

2.1 docker-compose.yml

新建一个文件夹,将docker-compose.yml放在文件夹下

执行 docker-compose up -d

执行完后访问 http://IP:PORT/

version: '3.8'

services:
  registry-ui:
    image: joxit/docker-registry-ui:main
    restart: always
    ports:
      - PORT:80
    environment:
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=国家前置软件仓库
      - DELETE_IMAGES=true
      - SHOW_CONTENT_DIGEST=true
      - NGINX_PROXY_PASS_URL=http://registry-server:5000
      - SHOW_CATALOG_NB_TAGS=true
      - CATALOG_MIN_BRANCHES=1
      - CATALOG_MAX_BRANCHES=1
      - TAGLIST_PAGE_SIZE=100
      - REGISTRY_SECURED=false
      - CATALOG_ELEMENTS_LIMIT=1000
    container_name: registry-ui

  registry-server:
    image: registry:2.8.2
    restart: always
    environment:
      REGISTRY_HTTP_HEADERS_Access-Control-Origin: '[http://registry.example.com]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'
      REGISTRY_HTTP_HEADERS_Access-Control-Credentials: '[true]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'
      REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: '[Docker-Content-Digest]'
      REGISTRY_STORAGE_DELETE_ENABLED: 'true'
    volumes:
      - ./registry/data:/var/lib/registry
    container_name: registry-server

2.2 docker设置

将自己的 IP:PORT添加到下面的数组中(没有的话需要自己的添加)以此允许本地推送镜像,如果是 Linux 的话,则需要找到 /etc/docker/daemon.json (没有需要自己创建)

"insecure-registries": [
    "http://IP:PORT"
  ],
# daemon.json
{
    "builder": {
      "gc": {
        "defaultKeepStorage": "20GB",
        "enabled": true
      }
    },
    "debug": false,
    "experimental": false,
    "features": {
      "buildkit": true
    },
    # 私人中央仓库地址,没有设置成 []
    "insecure-registries": [
      "http://IP:PORT"
    ],
    "registry-mirrors": []
}

2.3 测试镜像推送及拉取

docker tag nginx IP:PORT/nginx:1.0.0 # 给本地镜像打标签

docker images # 查看镜像列表

docker push IP:PORT/nginx:1.0.0 # 推送镜像到私有中央仓库
# 访问网址 http://IP:PORT, 查看镜像列表

docker rmi IP:PORT/nginx:1.0.0 # 删除镜像
docker images # 查看镜像列表

docker pull IP:PORT/nginx:1.0.0 # 拉取中央仓库镜像到本地
docker images # 查看镜像列表

2.4 其它机子推送与拉取

将自己的 IP:PORT添加到下面的数组中(没有的话需要自己的添加)以此允许本地推送镜像,如果是 Linux 的话,则需要找到 /etc/docker/daemon.json (没有需要自己创建)

"insecure-registries": [
    "http://IP:PORT"
  ],
# daemon.json
{
    "builder": {
      "gc": {
        "defaultKeepStorage": "20GB",
        "enabled": true
      }
    },
    "debug": false,
    "experimental": false,
    "features": {
      "buildkit": true
    },
    # 私人中央仓库地址,没有设置成 []
    "insecure-registries": [
      "http://IP:PORT"
    ],
    "registry-mirrors": []
}
docker pull IP:PORT/nginx:1.0.0 # 拉取中央仓库镜像到本地
docker images # 查看镜像列表

2.5. 镜像导出与导入

docker save -o nginx.tar nginx  # 导出
docker load -i nginx.tar        # 导入

2.6 离线一键安装脚本

echo '加载测试镜像 nginx'
docker load -i nginx.tar
echo '加载中央仓库管理工具ui镜像 registry-ui'
docker load -i joxit_docker-registry-ui_main.tar
echo '加载中央仓库管理工具镜像 registry'
docker load -i registry_2.8.2.tar
echo '运行中央仓库管理工具'
docker-compose up -d

3. 镜像制作

容器保存为镜像 https://blog.51cto.com/u_16213404/10234492

参考

Docker-搭建私有镜像仓库

在线安装docker和离线安装docker步骤详解

离线安装docker、docker-compose

标签:compose,离线,echo,registry,镜像,docker,PORT,搭建
From: https://www.cnblogs.com/54hys/p/18280539

相关文章

  • docker 常用命令速查
    启动和关闭docker服务servicedockerstartservicedockerstop查看当前所有的dockerimage文件dockerimagels查看当前所有正在运行的dockercontainerdockercontainerls构建dockerimage镜像文件dockerbuild-t<image_name>.将dockerimage文件实例化为dock......
  • 阿里云个人账号 创建docker仓库
    1、创建阿里云账号2、搜索“容器镜像服务”,进入,点击“管理控制台”3、选择个人实例,这一步可能会让你创建registry密码(如果没有创建过的话),后面登录需要4、创建命名空间5、创建镜像仓库 输入信息,点击下一步,选择本地仓库 6、进入管理页面执行相关命令 ......
  • Dockerfile语法,自定义镜像
    我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢?镜像结构要想自己构建镜像,必须先了解镜像的结构。镜像之所以能让我们快速跨操作系统部署应用而忽略其运行环境、配置,就是因为镜像中包含了程序运行需要的系统函数库、环境、配置、依......
  • 服务器上怎么部署docker
    在服务器上部署Docker主要涉及以下几个步骤,这里以UbuntuLinux为例,其他操作系统的步骤略有不同:在Ubuntu上部署Docker的步骤:1.安装Docker更新包索引:sudoaptupdate安装依赖包,以允许apt使用HTTPS访问Docker仓库:sudoaptinstall-yapt-transport-h......
  • 2.3 在MacOS系统下载、安装、配置搭建Python开发环境——《跟老吕学Python》
    2.3在MacOS系统下载、安装、配置搭建Python开发环境——《跟老吕学Python》在MacOS系统下载、安装、配置搭建Python开发环境一、Python开发环境的硬件要求二、下载MacOS版Python安装包1.访问Python官网下载页2.选择Mac版本3.点击下载4.检查下载的文件5.准备安装......
  • MyBatis是什么以及为什么需要ORM框架、快速搭建
    MyBatis是什么MyBatis的前身是Ibatis,本质是一款半自动化的ORM框架,除了能对POJO进行ORM映射之外,还可以编写SQL脚本语句。主要是为了解决我们平时开发中经常写的JDBC代码,将繁琐的JDBC代码封装起来,化繁为简。MyBatis映射文件四要素:1.SQL语句2.映射规则3.POJO4.Mapper接口为......
  • 《DNK210使用指南 -CanMV版 V1.0》第七章 基于CanMV的MicroPython语法开发环境搭建
    第七章基于CanMV的MicroPython语法开发环境搭建1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-1-环境准备与搭建
    1.简介Python+Playwright系列的文章还没有结束,就有好的小伙伴或者童鞋们私信公众号留言,问宏哥什么时候出Java语言的Playwright的自动化测试文章。本来想趁热打铁将Python+Playwright完结后,就开始Java语言的Playwright的自动化测试文章,但是好多人私信留言,索性就两个系列的文章......
  • 短视频矩阵/系统搭建/源码(HYT0606006)
    短视频矩阵的搭建通常涉及到内容管理系统(CMS)的集成、视频上传和管理功能、推荐算法、用户互动以及数据分析等多个组件。以下是构建短视频矩阵系统的一般步骤:需求分析:明确平台的目标用户、内容类型、功能需求,如社交分享、评论、点赞等。技术选型:选择后端框架(如Node.js、Pyth......
  • windows10用conda搭建tensorflow的gpu环境
    在tensorflow官方网址上也列举了很多方法,但都很麻烦,包括docker也没有办法在win10下应用gpu来计算。记录我的检查过程。在官网搜集有用的资料。“在Windows环境中从源代码构建”中提到了经过测试后,可用的配套版本,找到一个最新的是:|版本|Python版......