• docker之基本命令(2)


      上一篇介绍了一下,docker使用的有些基础命令。这次再来深入的了解一下较为复杂的docker命令

     
    管理指令   说明
    docker  container 用于管理容器
    docker image 用于管理镜像
    docker network 用于管理Docker网络
    docker node 用于管理Swarm集群节点
    docker plugin 用于管理插件
    docker secret 用于管理Docker机密
    docker service 用于管理Docker一些服务
    docker stack 用于管理Docker堆栈
    docker swarm 用于管理Swarm
    docker system 用于管理Docker
    docker volume 用于管理数据卷

     


    我们可以构建属于自己的镜像,可以将其存放在仓库中,方便日后拉取和维护,目前较为普遍使用的镜像管理工具:Docker Hub 和Docker Registry

      Docker Hub:

    •   开源免费
    • 自动化进行项目管理
    • 适用于个人和小团队
    • 公开镜像免费,私有仓库默认一个,获取更多需要另付费
    • 适用于新手

      官方地址:https://hub.docker.com

      进行登录注册,申请一个账户,

    常见操作:

      1 将本地镜像推送到远程Docker仓库中

        1)推送的镜像名称必须符合DockerID/repository的形式规范(DockerID为Docker Hub上的账号名, repository为镜像名)

    如果名称不规范,需要先进行名称的修改
    例如本地有个镜像: hello-docker
    
    docker tag hello-docker:latest  lanlang/test:latest
    
    这个时候 会在本地复制一个名称为 lanlang/test的镜像。原来的镜像名称不变,可以通过docker  images 查看

        2)登录认证

    推送到远程仓库的时候,需要进行登录验证
    docker  login
    
    提示输入用户名和密码, 返回Login Succeeded则成功

        3)镜像推送

    docker  push  lanlang/hello-docker:latest

        推送完成之后,就可以在Docker Hub 的test仓库中看到该镜像了

        因为是对外公开的,Docker Hub会定时的对上传的公开镜像进行索引,过段时间 任何人都可以搜索到该仓库镜像了

      Docker Registry:

    • 完全免费
    • 支持私有化管理
    • 需要手动配置,升级,维护和管理,没有Docker Hub功能强大
    • 适用于有一定经验的开发者

    开始本地私有仓库的搭建之旅吧!!!

      1. 使用Docker官方提供的Registry镜像可以搭建本地私有镜像仓库

    docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:2
    
    -d: 在后台运行该容器
    -p: 将私有镜像仓库内部默认暴露的5000端口映射到宿主机的5000端口
    --restart=always: 本地私有镜像仓库宕机后始终会自动重启
    --name registry 指定的容器的名称
    -v mnt/registry:/var/lib/registry: 表示容器内的默认存储为止/var/lib/registry中的数据挂在到宿主机/mnt/registry目录下,当容器销毁的时候, 在/var/lib/registry目录下的数据会自动备份到宿主机指定目录

      2. 重命名镜像

      本地私有仓库的镜像名必须符合 “仓库IP:端口/repository”

    docker tag hello-docker:latest  localhost:5000/myhellodocker
    这样镜像仓库中会多出一个localhost:5000/myhellodocker的镜像

      3. 镜像推送

    docker push localhost:5000/myhellodocker
    
    推送成功之后,就可以打开地址查看
    localhost:5000/v2/myhellodocker/tags/list
    
    显示:
    {
    name: "myhellodocker",
    tags: [
    "latest"
    ]
    }
    
    同时在本地磁盘/mnt/registry/docker/registry/v2/repositories目录下查看到

      至此我们本地私有仓库搭建成功,但是还是比较基础的。但是在实际的开发当中,无法保证系统的安全性和私密性,所以,我们还需要配置认证证书,登录账号等

      1. 首先,需要查看需要搭建私有仓库的服务器的IP地址,通过ifconfig

      2. 生成自签名证书

    cd /home/
    
    mkdir -p registry/certs && cd registry/certs/
    
    openssl req -x509 -days 3650 -subj '/CN=172.21.0.6:5000/' -nodes -newkey rsa:2048 -keyout domain.key -out domain.crt
    
    -x509: x509是自签发证书的格式
    -days 3650:表示证书的有效期
    172.21.0.6:5000:表示具体搭建Docker Registry本地镜像仓库的地址和端口
    rsa:2048:是证书算法长度
    domain.key   domain.crt  就是要生成的证书文件

      3. 生成用户名和密码

    在刚才的certs目录中执行
    cd .. && mkdir auth
    docker run --entrypoint htpasswd registry:2 -Bbn lanlang 123456 > htpasswd
    
    自此会生成本地私服访问的用户名和密码(lanlang   123456

      4.启动Docker Registry本地惊喜那个仓库服务

      将之前启动的该服务删除  docker  rm -f registry

    docker run -d -p 5000:5000 --restart=always --name registry 
    -v /mnt/registry:/var/lib/registry 
    -v `pwd`/auth:/auth 
    -e "REGISTRY_AUTH=htpasswd" 
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" 
    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 
    -v `pwd`/certs:/certs 
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt 
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key 
    registry:2

      

      5.配置Docker Registry 访问接口

      服务启动后,需要在该主机上配置供其他Docker机器访问的接口

    mkdir -p /etc/docker/certs.d/172.21.0.6:5000
    cp certs/domain.crt /etc/docker/certs.d/172.21.0.6:5000/

      第一步:创建一个证书目录,目录的名称要和启动的服务地址端口要一致

      第二步:将生成的domain.crt证书复制到该目录下

      6. 验证测试

        现在私有仓库服务已经可以提供正常服务,我们将本地的镜像推送进行测试

        1)

    vim /etc/docker/daemon.json
    
    {
        "registry-mirrors": [
            "https://1nj0zren.mirror.aliyuncs.com",
            "https://docker.mirrors.ustc.edu.cn",
            "http://f1361db2.m.daocloud.io",
            "https://registry.docker-cn.com"
        ],
        "insecure-registries": [
            "172.21.0.6:5000"
        ]
    }
    
    添加insecure-registries 部分

    保存,重启docker systemctl restart docker

        2)准备测试镜像

    docker tag lanlang/hello-docker:latest 172.21.0.6:5000/myhellodocker

        3)镜像推送

    docker push 172.21.0.6:5000/myhellodocker
    
    这个时候,会返回一个错误
    no basic auth credentials
    说明需要进行身份验证
    
    
    首先,登录镜像仓库
    docker login 172.21.0.6:5000
    根据提示输入用户名和密码
    
    
    再次推送即可

        4) 可以查看是否推送成功

    ls /mnt/registry/docker/registry/v2/repositories/

      至此,Docker Registry 已经搭建完成,但是它却没有可视化管理工具,但是管理上感觉并不方便,其实有些社区已经开发了专门可视化管理工具。例如Portus,它集成了一些镜像管理功能,可以完全可视化的管理仓库镜像和访问用户。这个服务的搭建,我会后面专门开一篇文章介绍于搭建

  • 相关阅读:
    python os模块
    python time、datetime模块
    python 导入模块、包
    python json、pickle
    python 装饰器
    python 生成器、迭代器
    python 内置函数
    python 函数的参数
    python 编码解码
    python 文件读写、shutil模块
  • 原文地址:https://www.cnblogs.com/xingxia/p/docker_command2.html
Copyright © 2020-2023  润新知