zoukankan      html  css  js  c++  java
  • Docker-01简介

    Docker-01简介
    
    1.是什么
    Docker是一个开源的应用容器引擎,可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任意Linux机器上,及容器虚拟化技术。
    Docker容器完全使用沙箱机制,相互之间不会有任何接口,且容器的开销极低。
    
    沙箱机制:
    默认情况下,一个应用程序可以访问机器上所有的资源、比如cpu、内存、文件系统、网络等。这是不安全的,如果随意操作资源,就有可能破坏其他应用程序使用的资源,或造成数据泄露。
    解决这个问题有两种方案:1)为程序分配一个限定权限的账号,级利用系统的权限机制进行限制;2)为程序提供一个受限的运行环境,即沙箱机制。
    沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的程序产生影响。
    
    2.干嘛用的
    Docker解决的问题:docker解决开发和运维部署间的矛盾,一次封装,到处运行。
    传统上,软件开发测试完成后,输出的是程序或那个编译执行的二进制文件,为了让这些程序可以顺利执行,开发团队需要准备完整的部署文件,让运维团队得以部署应用程序,开发团队需要清楚地告诉运维部署团队,用的全部配置文件+所有的软件环境,不过即使如此,仍然时常发生部署失败的情况。Docker镜像的设计,是docker打破程序即应用的观念。透过镜像(images)将作业系统核心除外,运作应用程序所需要的系统环境,由上而下打包,达到应用程序跨平台间的无法接轨运作。
    
    3.Docker优点
    Docker与传统虚拟化方式的区别:
    1)传统虚拟机技术是虚拟出一套硬件后,在上面运行一套完整系统吗,在该系统上再运行所需要的应用程序,因为要运行一套完整系统,资源浪费比较严重。
    2)Docker容器内的应用直接运行于宿主机的内核,容器没有自己的内核,而且容器也没有进行硬件虚拟,因此要比传统虚拟机技术节约资源。
    3)Docker每个容器之间相互隔离,每个容器都有自己的文件系统,容器能能之间进程不会相互影响,能区分管理资源。
    
    Docker带来的好处(一次构建,到处运行):1)带环境安装,更快的交付和部署;2)通过镜像运行新的容器,更便捷的升级和扩缩容;3)运行环境和镜像一致,可以通过镜像定位问题,更换镜像解决问题,系统运维更简单;3)是内核的虚拟化,节约资源,更高效的资源利用率。
    
    4.Docker组成
    
    
    Docker由客户端、Docker主机、注册中心3部分组成
    Docker主机Docker_HOST由容器和镜像组成
    注册中心Registry为云端仓库,存有镜像
    Docker镜像images是一个个只读的模版,可以用来创建Docker容器,一个镜像可以创建很多Docker容器。
    Docker容器Container可以看做是一个简易的Linux系统
    
    Docker命令:
    docker pull ,从云端下载镜像到本地
    docker run ,由镜像生成一个容器并运行,如果本地镜像不存在,会去往注册中心下载。
    
    5.Docker的安装
    以下命令需要使用root权限,如果不是root用户,需要先获取root权限
    1)较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,卸载它们:
    yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine
    
    2)安装依赖包
    yum -y install gcc
    
    yum -y install gcc-c++
    
    yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2
    
    3)配置yml国内仓库地址
    阿里云:
    yum-config-manager 
        --add-repo 
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    清华大学:
    yum-config-manager 
        --add-repo 
        https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    
    4)更yum新软件包索引
    yum makecache fast
    
    5)安装Docker
    yum install docker-ce docker-ce-cli containerd.io
    
    6)启动服务
    systemctl start docker
    
    7)查看docker版本信息
    docker version
    
    8)配置阿里云镜像加速器
    使用淘宝等账号访问登录:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
    如果页面没有开通就进行开通,在左边最下面镜像中心有个镜像加速器,右边有加速器操作文档,选择需要的系统。
    复制操作文档下面格式的一段代码直接执行:
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xy2bm1t2q.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    上面的代码进行的操作是:
    创建配置文件目录:
    sudo mkdir -p /etc/docker
    创建配置文件并输入配置:
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xy2bm1t2q.mirror.aliyuncs.com"]
    }
    EOF
    刷新配置重启docker:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    
    6.Docker底层原理
    1)Docker的组成
    Docker由以下3部分组成:
    镜像(image):只读模版,用于生成容器,只能下载上传,可以根据镜像new出n个容器
    容器(container):运行我们程序的虚拟的地方
    仓库(repository):仓库一般在网上,用于存储镜像
    
    2)底层原理
    Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端进行访问,守护进程从客户端接受命令并管理运行在主机上的容器。
    容器是一个运行时环境。
    
    7.Docker常用命令
    1)帮助命令:
    docker info 查看docker的运行信息
    docker help 帮助文档
    
    2)镜像命令:
    docker images 查看本地镜像
    docker search name 从远程仓库查找名称为name的镜像
            参数 -s 数字,列出收藏数不少于多的镜像
    docker pull name[:version] 下载镜像,可以通过:version指定版本,不指定默认最新的
    docker rmi nameId(或name) 删除名称id为nameId的(或名称为name的)镜像
    
    3)容器命令:
    docker run [options] IMAGE [command] [arg ...] 创建并启动容器
            参数说明:
                --name 指定容器的名字
                -d 后台运行容器(demons)
                -i 以交互模式运行容器,通常与-t同时使用
                -t 为容器重新分配一个伪输入端,即一个命令行窗口,常与-i一块使用
                -P随机端口映射
                -p指定端口映射,docker容器内如果要运行程序,占用的是容器内的端口,
                          需要映射到主机的端口才可以访问,映射格式有以下4种:
                            ip:hostPort:containerPort 
                            ip::containerPort
                            hostPort:continerPort  
                            containerPort
                         eg:
            eg:docker run -it centos
            eg:docker run -it --name ct1 centos
            特别说明1:每run一次都重新创建了一个容器。
            特别说明2:docker 容器后台运行,就必须有一个前台进程,否则docker启动容器后会立即再关闭容器(但交互模式除外,即用来-i参数的)
                    比如使用命令 docker run -d --name ct4 centos 启动一个centos容器ct4,然后再用后面的ps命令查看ct4这个容器的状态,会发现这个容器启动后仅隔着1秒就停止了。
            docker run name:version 下载并生成指定版本的容器
    docker ps [options] 查看正在运行的容器
            参数说明:
                -a:列出氮气所有正在运行的容器+历史上运行的容器
                -l:显示最近创建的容器
                -n:显示最近创建的n个容器,eg: docker ps -n3
    exit 停止容器并退出
    
    ctrl+p+q 退出登录,但容器不停止
    
    docker start 容器id或名字 启动已有的容器
    
    docker restart 容器id或名字 重新启动已有的在运行容器
    
    docker stop  容器id或名字 停止在运行容器
    
    docker kill 容器id或名字 强制停止在运行容器
    
    docker rm 容器id或名字 删除容器
            参数说明:
                -f:强制
    
    docker logs 容器id或容器名字  查看容器日志
            参数说明:
                 -f 跟随打印最近日志
                 -t 加入时间戳
                 --tail 数字 显示最后多少行
    
    docker top 容器id或容器名字 查看容器内的运行进程(在容器外面)
    
    进入某个容器并以命令行交互,有多种方式:
            docker exec -it 容器id或容器名称 bashShell  bashShell为bash的全名,在容器中打开新的终端,并可以启动新的进程。
                eg:docker exec -it ct3 /bin/bash
            docker attach   容器id或容器名称 直接进入容器启动命令的终端,不会启动新的进程
    
    docker cp 本地文件路径  容器id或容器名称:容器内目录    拷贝文件到docker
    
    
            
  • 相关阅读:
    C库函数标准编程之fscanf()函数解读及其实验
    WPF-20:richtextbox相关操作(转)
    C++内存管理学习笔记(7)
    Android 网络编程 Socket Http
    C++ Preprosessor import
    JAVA Socket(多个客户同时连接,信息共享) client (java/ruby)
    WPF页面跳转
    jenkis编译报错:需要class,interface或enum
    The 7 Stages Of Scaling Web Apps--reference
    大型网站架构演变和知识体系--转
  • 原文地址:https://www.cnblogs.com/ShouWangYiXin/p/14433948.html
Copyright © 2011-2022 走看看