Docker介绍以及实战教程

Docker简介

  • Docker为什么出现
    • 从事软件开发的朋友,可能经常会碰到以下场景:
    • 运维:你这程序有Bug啊,怎么跑不起来啊!
    • 开发:我机子上能跑啊,你会不会用啊
    • 究其原因还是开发环境与生产环境不同造成的,比如编译器,数据库版本不一致或者缺少某些组件。运维就得重新部署环境,费时费力。
    • 那么就有人想,能不能从根本上解决这个问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来?当然可以,答案就是Docker。
    • Docker可以把开发环境除了系统外,所有的东西都打包成一个镜像,然后交给运维,运维在生产环境上安装这个镜像后,就能保证生产环境和开发环境完全一致,就可以完美解决环境不同导致程序无法正常运行的问题。并且部署到新机器上时,直接进行安装,不用再费时费力的进行环境的部署。
  • Docker是什么
    • Docker是基于Go语言实现的云开源项目。主要目标是 “Build, Ship and Run Any App, Anywhere”, 也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能够做到 “一次镜像,处处运行”。
    • 解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
  • Docker能干什么
    • 传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁琐的配置才能正常运行。Docker化之后只需交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省了部署配置和测试验证时间。

容器和虚拟机

  • 对于虚拟机技术来说,传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统
  • 容器技术和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。容器内没有自己的内核,也没有进行硬件虚拟。
    请添加图片描述

    虚拟机容器
    启动速度分钟级秒级
    运行性能5%左右损失接近原生
    磁盘占用GBMB
    隔离性系统级进程级
    封装程度完整的操作系统只打包代码和依赖环境,共享宿主机内核

Docker网站

  • 官网
  • github 源码

Docker三要素

  • 镜像(image)
    • 镜像可以用来创建Docker容器,一个镜像可以创建多个容器。把镜像比作类,容器就是用类实例化出来的类对象。
  • 容器(container)
    • Docker利用容器独立运行一个或一组应用,应用程序或者服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 仓库(repository)
    • 集中存放镜像文件的地方

Docker安装

  • centos安装docker流程
  • 安装准备
    • centos安装docker要注意版本至少是centos7
  • 卸载旧版本
    • 如果已经安装docker,执行以下命令卸载
    •  sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
      
  • 安装gcc
    •   yum -y install gccyum -y install gcc-c++
      
  • 安装软件包
    •   sudo yum install -y yum-utils
      
  • 设置stable镜像仓库
    •   sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
  • 更新yum软件包索引
    •    yum makecache fast
      
  • 安装docker
    •   sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
  • 卸载docker
    •   	systemctl stop dockersudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo rm -rf /var/lib/dockersudo rm -rf /var/lib/containerd
      

Docker测试

  • 启动docker
    • sudo systemctl start docker
  • 查看docker版本
    • docker version
    • 可以查看到docker版本信息,就说明安装成功了

配置阿里云容器镜像

  • 配置阿里云镜像可以在拉取镜像时提高速度
  • 阿里云官网
  • 在产品这里搜索容器镜像服务
    在这里插入图片描述
    • 选择免费试用
      在这里插入图片描述
    • 按照这里去操作即可
      在这里插入图片描述

Docker常用命令

  • 帮助启动类命令
    • 启动docker:systemctl start docker
    • 停止docker:systemctl stop docker
    • 重启docker:systemctl restart docker
    • 查看docker状态:systemctl status docker
    • 开机启动:systemctl enable docker
    • 查看docker概要信息:docker info
    • 查看docker帮助文档:docker --help
    • 查看docker命令详细帮助文档:docker 命令 --help
  • 镜像命令
    • 列举镜像 : docker images
      • REPOSITORY:镜像仓库源
      • TAG:镜像标签版本号,latest表示最新版本
      • IMAGE ID :镜像ID
      • CREATED :镜像创建时间
      • SIZE : 镜像大小
      • 示例
      •   [root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED       SIZEchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago   844kB
        
    • 搜索镜像:docker search 镜像
      • NAME :镜像名
      • DESCRIPTION:镜像说明
      • STARS:点赞数
      • OFFICIAL:是否官方认证
      • AUTOMATED:是否是自动构建的
      •   [root@localhost lingp]# docker search hello-wordNAME                                    DESCRIPTION                   STARS     OFFICIAL   AUTOMATEDalexstruk/hello-wordpress                                             0                    chenlicn163/hello-word                  hello-word                    0                    [OK]princechopra/hello-word                                               0                    vaibhavmehta/hello-word-node            hello-word-node               0                    lyvy/hello-word                         hello-word spring boot        0                    ilfaugno/hello-word                                                   0                    sjolicoeur/hello-word                                                 0                    abhayjava/hello-word                    The dummy short description   0                    txg5214/hello-word                      hello-word                    0                    sjolicoeur/hello-word2                                                0                    yueshide/hello-word                                                   0                    rahulnit/hello-word                     hello-word                    0                    szaier75/hello-word                     hello-word                    0                    etokarev/hello-word-python                                            0                    cpangam/hello-word                                                    0                    geekmc/hello-word                                                     0                    bc14f103c716/hello-word                                               0                    rghorpade80/hello-word-docker-valaxy4                                 0                    wattwatt/hello-word                                                   0                    luoyangc/hello-word                                                   0                    hubikz/hello-worda                                                    0                    mselender/hello-word                                                  0                    thitikornc/hello-word                                                 0                    never001/hello-word                                                   0                    manyyaks/hello-word                                                   0         
        
    • 拉取镜像:git pull [镜像名字:TAG]
      • TAG可以不写,不写TAG就拉取最新的
      •   [root@localhost lingp]# docker pull chenlicn163/hello-wordUsing default tag: latestlatest: Pulling from chenlicn163/hello-word19223ab0feef: Pull complete Digest: sha256:2b7b800ab2ef8f0c2c3331ee170af82c3613b167d20e56d1884dca4772fee6c3Status: Downloaded newer image for chenlicn163/hello-word:latestdocker.io/chenlicn163/hello-word:latest[root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED       SIZEchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago   844kB
        
    • 查看镜像所占空间 : docker system df
    • 删除镜像 : docker rmi [镜像名:TAG 或者 IMAGE ID]
    • 删除所有镜像:docker rmi -f $(docker images -qa)
      • 这个命令知道就可以,可别随便用
  • 容器命令
    • 前面已经介绍了,把镜像比作类,容器就是类对象。因此我们先要有一个镜像,我们先拉取一个ubuntu镜像
    •   [root@localhost lingp]# docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntu7b1a6ab2e44d: Pull complete Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322Status: Downloaded newer image for ubuntu:latestdocker.io/library/ubuntu:latest[root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED         SIZEubuntu                   latest    ba6acccedd29   21 months ago   72.8MBchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB
      
    • 新建启动容器 : docker run [OPTIONS] 镜像名:TAG COMMAND
      • OPTIONS可取以下值:
        • –name : 为容器指定一个名称
        • -d : 后台运行容器并返回容器ID,也即启动守护式容器
        • -i :以交互模式运行容器,通常与-t同时使用
        • -t : 为容器重新分配一个伪输入终端,通常与-i同时使用
        • -P :随机端口映射
        • -p : 指定端口映射
      •   [root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED         SIZEubuntu                   latest    ba6acccedd29   21 months ago   72.8MBchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB[root@localhost lingp]# docker run -it --name=myubuntu ubuntu:latest /bin/bashroot@1a139f4915df:/#
        
      • TAG可以不写,默认就是最新的。这个命令表示使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。并给这个容器起名字myname,如果不指定name,系统会自动分配一个。这里说下-d参数的作用,不加-d,那么关闭当前容器终端,容器就会关闭,加-d,关闭当前容器终端,容器不会关闭,依旧在后台运行。
      • 这个时候我们就进入了ubuntu镜像开启的容器中,可以看下版本。此时我们新建和启动的这个容器就可以看成一个真实的ubuntu系统。
      •   root@1a139f4915df:/# cat /etc/issueUbuntu 20.04.3 LTS \n \lroot@1a139f4915df:/# 
        
    • 列出所有容器 : docker ps [OPTIONS]
      • OPTIONS可取以下值
        • -a : 列出当前所有正在运行的容器和历史运行过的
        • -l : 显示最近创建的容器
        • -n : 显示最近n个创建的容器
        • -q : 静默模式,只显示容器编号
        • –no-trunc : 表示不省略信息展示
      • 新开一个终端,执行命令。直接执行docker ps,只显示已启动的容器
      •   [root@localhost lingp]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES1a139f4915df   ubuntu:latest   "/bin/bash"   6 minutes ago    Up 6 minutes                          myubuntu21c28993fefb   ubuntu:latest   "/bin/bash"   11 minutes ago   Exited (0) 7 minutes ago              infallible_diracda45904d7f38   ubuntu          "/bin/bash"   24 minutes ago   Exited (0) 12 minutes ago             compassionate_thompson3e6cfc10ad0d   ubuntu          "/bin/bash"   29 minutes ago   Exited (0) 24 minutes ago             adoring_lalande
        
    • 退出容器
      • 先要进入容器
      • exit : 退出后,容器会停止
      • ctrl + p + q : 退出后,容器不会停止
    • 启动容器 : docker start 容器ID或容器名
      •   [root@localhost lingp]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                       PORTS     NAMES1a139f4915df   ubuntu:latest   "/bin/bash"   18 minutes ago   Exited (127) 5 seconds ago             myubuntu21c28993fefb   ubuntu:latest   "/bin/bash"   24 minutes ago   Exited (0) 19 minutes ago              infallible_diracda45904d7f38   ubuntu          "/bin/bash"   36 minutes ago   Exited (0) 24 minutes ago              compassionate_thompson3e6cfc10ad0d   ubuntu          "/bin/bash"   42 minutes ago   Exited (0) 36 minutes ago              adoring_lalande[root@localhost lingp]# docker start 1a139f4915df1a139f4915df[root@localhost lingp]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES1a139f4915df   ubuntu:latest   "/bin/bash"   19 minutes ago   Up 3 seconds                          myubuntu21c28993fefb   ubuntu:latest   "/bin/bash"   24 minutes ago   Exited (0) 20 minutes ago             infallible_diracda45904d7f38   ubuntu          "/bin/bash"   36 minutes ago   Exited (0) 25 minutes ago             compassionate_thompson3e6cfc10ad0d   ubuntu          "/bin/bash"   42 minutes ago   Exited (0) 36 minutes ago             adoring_lalande
        
    • 重启容器 : docker restart 容器ID或容器名
    • 停止容器:docker stop 容器ID或容器名
    • 强制停止容器 : docker kill 容器ID或容器名
    • 删除已停止的容器 : docker rm 容器ID或容器名
      •   [root@localhost lingp]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES1a139f4915df   ubuntu:latest   "/bin/bash"   21 minutes ago   Up 2 minutes                          myubuntu21c28993fefb   ubuntu:latest   "/bin/bash"   27 minutes ago   Exited (0) 22 minutes ago             infallible_diracda45904d7f38   ubuntu          "/bin/bash"   39 minutes ago   Exited (0) 27 minutes ago             compassionate_thompson3e6cfc10ad0d   ubuntu          "/bin/bash"   45 minutes ago   Exited (0) 39 minutes ago             adoring_lalande[root@localhost lingp]# docker rm 3e6cfc10ad0d3e6cfc10ad0d[root@localhost lingp]# docker rm da45904d7f38da45904d7f38[root@localhost lingp]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES1a139f4915df   ubuntu:latest   "/bin/bash"   22 minutes ago   Up 3 minutes                          myubuntu21c28993fefb   ubuntu:latest   "/bin/bash"   27 minutes ago   Exited (0) 23 minutes ago             infallible_dirac
        
    • 强制删除所有容器 : docker rm -f $(docker ps -a -q)
      • 谨慎使用
    • 查看容器日志 : docker logs 容器ID
    • 查看容器内运行的进程:docker top 容器ID
    • 查看容器内部细节 : docker insepct 容器ID
    • 进入已启动容器
      • docker exec -it 容器ID /bin/bash
        • 在容器中打开新的终端,并且可以启动新的进程。用exit退出,不会导致容器的停止。
      • docker attach 容器ID
        • 直接进入容器启动命令的终端,不会启动新的进程。用exit退出,会导致容器的停止。
      • 简单说就是exec进入容器后,执行exit退出,容器不会停止。attach进入容器,执行exit退出,容器会停止。推荐使用exec进入容器。
    • 容器和主机之间文件拷贝
      • 容器到主机 : docker cp 容器ID:容器中文件路径 主机路径
      • 主机到容器 : docker cp 主机文件路径 容器ID:容器中文件路径
    • 导入和导出容器
      • 导出容器 : docker export 容器ID > ./myubuntu.tar
      • 导入容器 : cat myubuntu.tar | docker import -镜像用户/镜像名:镜像版本号

提交带环境的镜像

  • 让我们回到文章开头那个场景,运维人员使用的环境要运行开发人员的程序,就要保证和开发人员的环境一致,比如开发人员是在ununtu上开发的,使用的环境有vim,gcc等工具。但运维人员的环境上是没有的,那么开发人员就可以将自己的整个开发环境打包提交
  • 在上面的介绍中,我们拉取了一个ubuntu镜像,并开启了一个容器。默认这个容器是没有vim,gcc等工具,我们在这个容器中安装vim,gcc后,打包成一个镜像并提交。
  • 提交命令
    • docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
    •   [root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED         SIZEubuntu                   latest    ba6acccedd29   21 months ago   72.8MBchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB[root@localhost lingp]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED       STATUS                     PORTS     NAMES8f9846cbdfb2   ubuntu:latest   "/bin/bash"   2 hours ago   Up 15 minutes                        myubuntud8a9c1c2704eb   ubuntu:latest   "/bin/bash"   2 hours ago   Exited (129) 2 hours ago             myubuntu[root@localhost lingp]# docker commit -m="add vim and gcc" -a="graywolf" 8f9846cbdfb2 grayubuntu:1.0.0sha256:56df3dc1d8b1f94583bc7ab59b4f0b2f402dbaa2869dd558b1630ce763eeb7a6[root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED         SIZEgrayubuntu               1.0.0     56df3dc1d8b1   8 seconds ago   342MBubuntu                   latest    ba6acccedd29   21 months ago   72.8MBchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB
      
    • ubuntu是原始的镜像,grayubuntu是我们安装vim和gcc后的镜像。可以比对下,大小就发生变化了。运维拿到这个新镜像grayubuntu,启动容器后,就可以直接在容器中运行我们的程序了。

镜像发布到阿里云

  • 发布到阿里云
    • 进到阿里云官网容器镜像服务这块
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 首先创建一个命名空间
      在这里插入图片描述
      在这里插入图片描述
    • 在命名空间下创建镜像仓库
      在这里插入图片描述
      在这里插入图片描述
    • 选择本地仓库
      在这里插入图片描述
    • 创建镜像仓库成功后,阿里云会告诉我们如何拉取和推送镜像
      在这里插入图片描述
    • 我们在终端直接执行命令
    • 先进行登录
    •   [root@localhost lingp]# docker login --username=littleGrayWolf registry.cn-hangzhou.aliyuncs.comPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
      
    • 推送到阿里云镜像仓库
    •   [root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED          SIZEgrayubuntu               1.0.0     56df3dc1d8b1   31 minutes ago   342MBubuntu                   latest    ba6acccedd29   21 months ago    72.8MBchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago      844kB[root@localhost lingp]# docker tag 56df3dc1d8b1 registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0[root@localhost lingp]# docker push registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0The push refers to repository [registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0]2d9e91b2c941: Pushed 9f54eef41275: Pushed 1.0.0: digest: sha256:1dd42bfd2491b694c6d0fa5971c066d37192135d212b42faa6fb961e139e6849 size: 742
      
    • 这个时候阿里云上就有我们的镜像了
      在这里插入图片描述
    • 可以测试下,先删除本地镜像,然后从阿里云重新拉取
    •   [root@localhost lingp]# docker imagesREPOSITORY               TAG       IMAGE ID       CREATED         SIZEubuntu                   latest    ba6acccedd29   21 months ago   72.8MBchenlicn163/hello-word   latest    3ed90589c0b6   4 years ago     844kB[root@localhost lingp]# docker pull registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.01.0.0: Pulling from littlegraywolf/ubuntu1.07b1a6ab2e44d: Already exists d2cb84f992fd: Pull complete Digest: sha256:1dd42bfd2491b694c6d0fa5971c066d37192135d212b42faa6fb961e139e6849Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0registry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0:1.0.0[root@localhost lingp]# docker imagesREPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZEregistry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   41 minutes ago   342MBubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MBchenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB
      
    • 这里测试使用的是个人版服务,可以免费使用。如果是企业使用,可以付费购买企业版。

镜像发布到私有库

  • 阿里云毕竟是第三方公司,将自己公司的东西放到阿里云还是不够安全的。因此一般来说,公司都会在内部搭建私有镜像仓库,提供给公司内部人员使用。

  • 搭建私有镜像仓库

  • 下载镜像 Docker Registry : docker pull registry

    •   [root@localhost lingp]# docker pull registryUsing default tag: latestlatest: Pulling from library/registry79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4a2: Pull complete e2ead8259a04: Pull complete 3790aef225b9: Pull complete Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375Status: Downloaded newer image for registry:latestdocker.io/library/registry:latest[root@localhost lingp]# docker imagesREPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZEregistry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   56 minutes ago   342MBregistry                                                     latest    b8604a3fe854   20 months ago    26.2MBubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MBchenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB
      
  • 运行私有库镜像Registry

    •   [root@localhost lingp]# docker run -d -p 5000:5000 --privileged=true registryccbe13e502cd4e9f85d08086aebbe0c5a4afff7eefc730209ac6f5004580fa60[root@localhost lingp]# docker psCONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMESccbe13e502cd   registry   "/entrypoint.sh /etc…"   7 seconds ago   Up 6 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   condescending_sammet
      
  • 查看私有库中的镜像

    •   [root@localhost lingp]# curl -XGET http://192.168.206.136:5000/v2/_catalog{"repositories":[]}
      
  • 修改tag

    • 修改下tag,符合私有仓库规范
    • docker tag 镜像名:TAG ip:port/镜像名:TAG
    •   [root@localhost lingp]# docker imagesREPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZEgrayubuntu2                                                  2.0.0     bcc9dba161d0   52 minutes ago   185MBregistry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago      342MBregistry                                                     latest    b8604a3fe854   20 months ago    26.2MBubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MBchenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB[root@localhost lingp]# docker tag grayubuntu2:2.0.0 192.168.206.136:5000/grayubuntu2:2.0.0[root@localhost lingp]# docker imagesREPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZE192.168.206.136:5000/grayubuntu2                             2.0.0     bcc9dba161d0   52 minutes ago   185MBgrayubuntu2                                                  2.0.0     bcc9dba161d0   52 minutes ago   185MBregistry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago      342MBregistry                                                     latest    b8604a3fe854   20 months ago    26.2MBubuntu                                                       latest    ba6acccedd29   21 months ago    72.8MBchenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago      844kB
  • 修改配置使之支持http

    • 默认不支持http推送,可以修改下配置让其支持
    • vim /etc/docker/daemon.json
    •   {"registry-mirrors": ["https://ssfzdz4k.mirror.aliyuncs.com"],"insecure-registries":["192.168.206.136:5000"]}
      
    • 修改完后重启docker
    •   systemctl restart docker
      
    • 启动下私服仓库
    •   docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry --privileged=true registry
      
  • 推送本地镜像到私有仓库

    • docker push 镜像名:TAG
    •   [root@localhost lingp]# docker push 192.168.206.136:5000/grayubuntu2:2.0.0The push refers to repository [192.168.206.136:5000/grayubuntu2]07c695add28a: Pushed 9f54eef41275: Pushed 2.0.0: digest: sha256:39ace23746821bff7798f32bbce0544789019485c231ea08aca15384cc0afe68 size: 741[root@localhost lingp]# curl -XGET http://192.168.206.136:5000/v2/_catalog{"repositories":["grayubuntu2"]}
      
  • 拉取私有仓库镜像到本地

    • docker pull 镜像名:TAG
    •   [root@localhost lingp]# docker imagesREPOSITORY                                                   TAG       IMAGE ID       CREATED         SIZEregistry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago     342MBregistry                                                     latest    b8604a3fe854   20 months ago   26.2MBubuntu                                                       latest    ba6acccedd29   21 months ago   72.8MBchenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago     844kB[root@localhost lingp]# git pull 192.168.206.136:5000/grayubuntu2:2.0.0bash: git: command not found...[root@localhost lingp]# docker pull 192.168.206.136:5000/grayubuntu2:2.0.02.0.0: Pulling from grayubuntu27b1a6ab2e44d: Already exists 0cdd9d7ee9f3: Pull complete Digest: sha256:39ace23746821bff7798f32bbce0544789019485c231ea08aca15384cc0afe68Status: Downloaded newer image for 192.168.206.136:5000/grayubuntu2:2.0.0192.168.206.136:5000/grayubuntu2:2.0.0[root@localhost lingp]# docker imagesREPOSITORY                                                   TAG       IMAGE ID       CREATED             SIZE192.168.206.136:5000/grayubuntu2                             2.0.0     bcc9dba161d0   About an hour ago   185MBregistry.cn-hangzhou.aliyuncs.com/littlegraywolf/ubuntu1.0   1.0.0     56df3dc1d8b1   2 hours ago         342MBregistry                                                     latest    b8604a3fe854   20 months ago       26.2MBubuntu                                                       latest    ba6acccedd29   21 months ago       72.8MBchenlicn163/hello-word                                       latest    3ed90589c0b6   4 years ago         844kB
      
    • 至此,运维就可以拉取开发上传到私有库的镜像,去在其他机器上跑我们的程序了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java安全】RMI

文章目录 【java安全】RMI前言RMI的组成RMI实现Server0x01 编写一个远程接口0x02 实现该远程接口0x03 Registry注册远程对象 Client 小疑问RMI攻击 【java安全】RMI 前言 RMI全称为:Remote Method Invocation 远程方法调用,是java独立的一种机制。 RM…

SoapUI、Jmeter、Postman三种接口测试工具的比较分析

前段时间忙于接口测试,也看了几款接口测试工具,简单从几个角度做了个比较,拿出来与诸位分享一下。本文从多个方面对接口测试的三款常用工具进行比较分析,以便于在特定的情况下选择最合适的工具,或者使用自己编写的工具…

12.(开发工具篇vscode+git)vscode 不能识别npm命令

1:vscode 不能识别npm命令 问题描述: 解决方式: (1)右击VSCode图标,选择以管理员身份运行; (2)在终端中执行get-ExecutionPolicy,显示Restricted&#xff…

【主成分分析(PCA)】

主成分分析(PCA) 摘要 在现代数据科学中,维度灾难常常是数据处理与分析的一大难题。主成分分析(PCA)是一种广泛使用的数据降维技术,它通过将原始数据转换为新的低维空间,保留最重要的信息&…

C国演义 [第十一章]

第十一章 有效的字母异位词题目理解代码 两数之和题目理解(暴力篇)代码题目理解(哈希篇)代码 有效的字母异位词 力扣链接 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词 注意:若 s 和 t 中每个字符出现的次数都相同,…

git常用命令

git安装后-指定名称和邮箱 $ git config --global user.name “Your Name” $ git config --global user.email “emailexample.com” 本地初始化GIT 仓库: #基于远程仓库克隆至本地 git clone <remote_url> #当前目录初始化为git 本地仓库 git init “directory” 把文…

Linux:多进程和多线程回环socket服务器和客户端

多进程socket服务器代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <string.h> #include <ctype.h> #include <sys/wait.h> #i…

Facebook Messenger市场营销,跨境电商不可忽略的营销手段

营销始于广告。广告仍然是不可或缺的&#xff0c;但广告的方式正在发生变化。以前商家会使用广告邮件或者直接转到网站上的产品页面&#xff0c;但是这两种方法都存在很大问题。虽然企业可以通过电子邮件与潜在客户保持联系&#xff0c;但不能保证这些潜在客户会真正看广告邮件…

Gitee 上传项目到仓库(上传文件夹)

一、将仓库下载到本地 1.首先打开仓库&#xff0c;点击下载压缩包 2.将下载的压缩包解压&#xff0c;并打开&#xff0c;在当前目录下打开 二、git操作 1.在文件当前目录打开git bash 2.初始化git git init 该命令会生成一个隐藏的.git文件夹 如果不是第一次使用&#…

精通正则表达式 - 打造高效正则表达式

目录 一、典型示例 1. 稍加修改——先迈最好使的腿 2. 效率 vs 准确性 3. 继续前进——限制匹配优先的作用范围 4. “指数级”匹配 二、全面考察回溯 1. 传统 NFA 的匹配过程 2. POSIX NFA 需要更多处理 3. 无法匹配时必须进行的工作 4. 看清楚一点 5. 多选结构的代…

测试用例实战

测试用例实战 三角形判断 三角形测试用例设计 测试用例编写 先做正向数据&#xff0c;再做反向数据。 只要有一条边长为0&#xff0c;那就是不符合要求&#xff0c;不需要再进行判断&#xff0c;重复。 四边形 四边形测试用例

HDFS的文件块大小(重点)

HDFS 中的文件在物理上是分块存储 &#xff08;Block &#xff09; &#xff0c; 块的大小可以通过配置参数( dfs.blocksize&#xff09;来规定&#xff0c;默认大小在Hadoop2.x/3.x版本中是128M&#xff0c;1.x版本中是64M。 如果一个文件文件小于128M&#xff0c;该文件会占…

Python实战案例:轻松采集微博评论,揭示网络舆论热点!

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 开发环境: python 3.8: 解释器 pycharm: 代码编辑器 模块使用: requests: 发送请求 parsel: 解析数据 jieba pandas stylecloud 第三方模块安装&#xff1a; win R 输入cmd 输入安装命令 pip install 模块名 (如果你…

uniapp 条件编译失败,跑不起来

因为这行代码整个uniapp都跑不起来&#xff0c;谁懂救命。再说uniapp的异常提示也太反人类了<!-- <image :src"require(/ baseListItem.url)" /> -->

高精度地图服务引擎项目

技术栈&#xff1a;使用vue3TypeScriptElement PlusPiniaaxios 项目描述&#xff1a;高精度地图服务引擎项目&#xff0c;提供轻量化处理3D瓦片切片分布式处理分发服务的一站式解决方案 工作内容&#xff1a;1、项目60%已上的页面开发 2、部分模块的功能实现&#xff0c; 3、封…

LT6911C 是一款HDMI 1.4到双端口MIPIDSI/CSI或者LVDS加音频的一款高性能芯片

LT6911C 1.描述&#xff1a; LT6911C是一款高性能的HDMI1.4到MIPIDSI/CSI/LVDS芯片&#xff0c;用于VR/智能手机/显示器应用程序。对于MIPIDSI/CSI输出&#xff0c;LT6911C具有可配置的单端口或双端口MIPIDSI/CSI&#xff0c;具有1个高速时钟通道和1个~4个高速数据通道&#…

Flask 笔记

Flask 笔记 一、Flask介绍 1、学习Flask框架的原因 2020 Python 开发者调查结果显示Flask和Django是Python Web开发使用的最主要的两个框架。 2、Flask介绍 ​ Flask诞生于2010年&#xff0c;是Armin ronacher用Python 语言基于Werkzeug工具箱编写的轻量级Web开发框架。 ​…

24 ==比较的是地址在.equals比较的是内容

public class Demo1 {public static void main(String[] args) {byte[] arr {97,98,99};String s1 new String(arr);String s2 new String(arr);System.out.println(s1s2);System.out.println(s1.equals(s2));} }

Ubuntu16.04LTS安装ROS测试小海龟样例

一、参考资料 在Ubuntu中安装ROS Kinetic ROS安装ubuntu16.04 无需科学上网解决sudo rosdep init初始化问题 二、安装ROS关键步骤 1. 选择ROS版本 ROS安装选择 Ubuntu版本不同&#xff0c;对应安装的ROS版本也不同&#xff0c;务必版本对齐。 本文以Ubuntu16.04LTS系统为例…

MonoBehaviour 组件

MonoBehaviour 组件是指继承了 MonoBehaviour 类的脚本组件&#xff0c;可以附加到游戏对象上&#xff0c;用于控制游戏对象的行为和交互。 MonoBehaviour 类是 Unity 中的一个基类&#xff0c;提供了许多方法和事件&#xff0c;用于处理输入、渲染、碰撞、协程等操作。 Unity…