zoukankan      html  css  js  c++  java
  • docker 学习

    什么是 Docker

    1. Docker 属于「操作系统层面的虚拟化技术」,主要用来对进程进行封装隔离。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
    2. 容器内的应用进程直接运行于宿主机的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便

    Docker 的基本概念

    • Docker 镜像

      Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

    • Docker 容器

      镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

    • Docker Registry

      镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

    Docker 常用命令

    # 查看 docker 版本
    docker version
    # 查看docker系统的信息
    docker info
    # 日志信息
    docker logs
    # 查看指定镜像日志(id 为容器 id 或 tag)
    docker logs id
    # docker 镜像状态检查
    service docker status
    # 启动关闭docker
    sudo service docker start|stop
    
    
    # 列出所有的container
    docker ps -a  
    # 用一行列出所有正在运行的container(容器多的时候非常清晰)
    docker ps | less -S
    # 列出最近一次启动的container
    docker ps -l 
    # 删除单个容器
    docker rm Name/ID
    # 删除所有容器
    docker rm `docker ps -a -q` 
    # 停止、启动、杀死、重启一个容器
    docker stop Name/ID  
    docker start Name/ID  
    docker kill Name/ID  
    docker restart name/ID
    
    
    # 列出镜像
    sudo docker images
    -a, –all=false Show all images; –no-trunc=false Don’t truncate output; -q, –quiet=false Only show numeric IDs
    # 从dockerhub检索image
    docker search image_name
    # 下载image
    docker pull image_name
    # 删除一个或者多个镜像
    docker rmi image_name  
    -f, –force=false Force; –no-prune=false Do not delete untagged parents
    # 显示一个镜像的历史
    docker history image_name
    # 发布docker镜像
    docker push new_image_name
    
    docker push dockerhub.yourdomain.com:443/hello.demo.kdemo:v1.0
    拉取docker镜像
    $docker pull image_name
    
    
    # 保存对容器的修改
    docker commit
    # 保存某个容器成为一个镜像
    docker commit -a "user" -m "commit info" [CONTAINER] [imageName]:[imageTag]
    # 推送一个容器到中心仓库
    docker login --username=[userName] --password=[pwd] [registryURL]
    ## 建议登录后查看 docker info
    docker tag [imageID] [remoteURL]:[imageTag]
    docker push [remoteURL]:[imageTag]
    # 拉取提交的容器
    docker pull [remoteURL]:[imageTag]
    # 对比容器的改动
    docker diff
    # 附加到一个运行的容器上
    docker attach
    

    python 镜像实例构建

    在 python 包的目录,运行以下命令上传(companyinternal 为公司内部 pypi )

    • python setup.py sdist upload -v -r companyinternal

    docker build

    • docker build -t harbor.company.com/company/test_object:0.2.3.dev1 .

      harbor.company.com/company/ 为公司的 docker 远程仓库地址,「test_object:0.2.3.dev1」为 工程名:版本号

    docker push

    • docker push harbor.company.com/company/test_object:0.2.3.dev1

    docker 查看镜像打包的源文件

    docker exec -it e493d4e65146 bash

    cd /lib64/python3.4/site-packages/test_object

    docker 镜像上传

    example:

    • test_object 本地代码提交至test_for_delay分支

    • 到某机器对应的 project 的里 git pull,比如到/tmp/test_object下pull代码

    • cd docker后执行命令:

      • find test_object/dist/ -name "*.tar.gz" | xargs --no-run-if-empty rm
      • (cd test_object && python3 setup.py sdist)
      • dist=ls test_object/dist | tail -n 1
      • cp test_object/dist/$dist resources/test_object.tgz
    • 通过docker images|grep test_object 获取

    • 开始build:

      • docker build . -t docker-hub-local.company.com:5000/test_object_delay_test:latest
    • 在 a 环境执行:

      • docker push docker-hub-local.company.com:5000/test_object_delay_test:latest
    • 在 b 环境执行:

      • docker pull docker-hub-local.company.com:5000/test_object_delay_test:latest
    • 在m环境检查:docker images


    参考资料:

  • 相关阅读:
    android webview cookie同步
    session和cookie
    对称加密与非对称加密
    理解java回调机制
    android studio命令
    android studio友盟gradle多渠道打包
    [c++] final override keyword
    [C++] Returning values by reference in C++
    [c++] polymorphism without virtual function
    [C++] NEW Advanced Usage
  • 原文地址:https://www.cnblogs.com/ronky/p/9792523.html
Copyright © 2011-2022 走看看