• Docker - 私有云、数据卷、网络


    概述

    云服务已经成长为一个技术绕不过去的既成事实,仓库的管理、数据的应用、管理和安全,容器间的通信,充分的学习这些技术,是实现微服务的基础。

    需要学习基础的同学,请浏览之前的博客:

    搭建docker私有云仓库

    docker run -d -p 5000:5000 --restart=always --name registry
    -v /etc/docker/registry/config.yml:/Users/zhangyu/docker/registry/config.yml 
    -v /Users/zhangyu/docker/registry/data:/var/lib/registry
    registry:2
    
    • 1
    • 2
    • 3
    • 4

    测试是否成功:

    curl -i localhost:5000/v2/
    
    • 1

    把自定义镜像push到私有仓库,先试用tag命令更换成私有云格式的镜像名称,如果遇到问题,修改/etc/docker/daemon.json,insecure-registries是镜像加速地址,registry-mirrors私有云仓库ip地址。

    {
      "insecure-registries":["127.0.0.1:5000"] ,
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    
    • 1
    • 2
    • 3
    • 4

    搭建成功后,拉取镜像

    docker pull 127.0.0.1:5000/server1:1.2
    
    • 1

    查看长佩私有云里的镜像,顺便在说一句这个东西总是觉得有点眼熟,有点像es的地方,是怎么实现的等有时间再深挖一下。

    curl -i localhost:5000/v2/_catalog
    
    • 1

    数据卷

    数据卷的挂载是特别重要的部分,因为你需要再容器运行时保持数据的可用,在容器发生意外,可以及时恢复数据。

    容器中的管理数据主要有两种方式:

    • 数据卷:容器内数据直接映射到本地主机环境
    • 数据卷容器:使用特定容器维护数据卷

    yum update(centos),apt-get update;(Ubuntu)

    1.创建一个本地数据卷

    docker volume create -d local mysql_node2
    
    • 1

    2.绑定数据卷

    • volume:普通数据卷,映射到主机/var/lib/docker/volumes路径下;
    • bind:绑定数据卷,映射到主机指定路径下;
    • tmpfs:临时数据卷,只存在于内存中。
    docker run --name mysql-node2 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=rootroot --mount type=bind,src=/Users/zhangyu/docker/mysql/node2/conf/my.cnf,dst=/etc/mysql/my.cnf --mount type=bind,src=/Users/zhangyu/docker/mysql/node2/data,dst=/var/lib/mysql --restart=on-failure:3 -d mysql:5.7
    
    • 1

    3.数据卷容器

    docker run -it -v /vData --name vData centos:7
    
    • 1
     docker run -d  --privileged=true --volumes-from vData -v /Users/zhangyu/ChangPei/Code/www/cpserver/db:/data/db --mount  type=bind,src=/Users/zhangyu/ChangPei/Code/www/cpserver/servers,dst=/root/server/nginx/conf/servers --name serverTest --restart=always  127.0.0.1:5000/server1:1.2 /run.sh
    
    • 1

    数据卷容器的作用是如果当数据卷内新增文件,会及时同步在运行的实例里,注意:使用–volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态。

    网络

    容器间的通信 ,Mac 有Docker0的问题,解决请点击解决Mac中的Docker宿主机与容器不能通信问题

    查看本地的docker网络

    docker network ls
    
    • 1

    创建自定义网络

    docker network create --subnet=172.20.1.0/24 net1
    
    • 1

    在创建时指定网段和IP,请使用--net=net1 --ip 172.20.1.3,参考下面的命令:

    docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 
    --name=node1 --net=net1 --ip 172.20.1.2 pxc
    
    • 1
    • 2
  • 相关阅读:
    Node.js和浏览器在JavaScript运行环境方面存在一些区别和联系
    Django 访问静态文件的APP staticfiles
    【网络通信三】研华网关Modbus服务设置
    SpringCloud微服务(三)——Zookeeper服务注册中心
    JS中字符串与ASCII码相互转换,前端如何解决秘钥非明文存储
    [C++](10)C++的string类如何实现?
    常见的网络协议
    10-3 Prometheus远端存储VictoriaMetrics集群版
    哪一种反爬虫策略更加人性化,不让用户感知到
    树莓派Pico
  • 原文地址:https://blog.csdn.net/xuezhiwu001/article/details/125450413