• Docker的使用


    Docker:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何运行的Linux机器上,也可以实现虚拟化。通俗的将,docker就是一个集装箱,将需要的软件打包,可以在其他服务器上部署

    Docker的组件:

      1.Docker客户端和服务器

        Docker是一个客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。也就是客户端只需向Docker服务器或者守护进程发送请求,服务器将完成所有工作并返回结果

      2.Docker镜像(image):

        构建Docker的基石。可以理解为安装好软件的集装箱

      3.Registry(注册中心)

        Docker 用 Registry 来保存用户构建的镜像。Registry 分为公共和私有两种。Docker 公司 运营公共的 Registry 叫做 Docker Hub。用户可以在 Docker Hub 注册账号,分享并保存自己的 镜像

      4.Docker容器(container)

         Docker 可以构建和部署容器,需要把自己的应用程序或者服务打包放进容 器即可。运行镜像,镜像中安装的软件也被启动,此时得到的内容就是一个容器,也就是容器基于镜像启动

      5. repository(仓库)

         仓库(Repository)是集中存放镜像文件的场所。

         仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 时速云 、网易云 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。

           当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

    Docker的优点: 

        1.简化配置 
        这是Docker初始目的,虚拟机VM最大的好处是基于你的应用配置能够无缝运行在任何平台上。Docker提供同样类似VM的能力,但是没有任何副作用,它能让你将环境和配置放入代码然后部署,同样的Docker配置能够在各种环境中使用,这实际是将应用环境和底层环境实现了解耦。

      2.代码管道化管理 
        能够对代码以流式pipeline管道化进行管理,从开发者的机器到生产环境机器这个流程中都能有效管理。因为在这个流程中会有各种不同的环境,每个都可能有微小的区别,Docker提供了跨越这些异构环境以一致性的微环境,从开发到部署实现流畅发布。

      3.开发人员的生产化 
        在一个开发环境,我们希望我们的开发环境能更加接近于生产环境,我们会让每个服务运行在自己的VM中,这样能模拟生产环境,比如有时我们并不总是需要跨越网络连接,这样我们可以将多个Docker装载一系列服务运行在单机上最大程度模拟生产分布式部署的环境。

      4.应用隔离 
        有很多理由你需要在一台机器上运行多个应用,这就需要将原来铁板一块monolithic的应用切分为很多微服务。实现应用之间的解耦,将多个应用服务部署在多个Docker中能轻松达到这个目的。

      5.服务合并 
        使用Docker也能合并多个服务以降低费用,不多的操作系统内存占用,跨实例共享多个空闲的内存,这些技术Docker能以更加紧密资源提供更有效的服务合并。

      6.多租户 
        Docker能够作为云计算的多租户容器,使用Docker能容易为每个租户创建运行应该多个实例,这得益其灵活的快速环境以及有效diff命令。

      7.快速部署 
        Docker通过创建进程的容器,不必重新启动操作系统,几秒内能关闭,你可以在数据中心创建或销毁资源,不用担心额外消耗。典型的数据中心利用率是30%,通过更积极的资源分配,以低成本方式对一个新的实例实现一个更聚合的资源分配,我们很容易超过这个利用率,大大提高数据中心的利用效率。 

      8.环境统一                                                                                                                                                                                     

        docker将容器打包成镜像,创建符合docker hub规范的镜像,上传进个人的私有docker hub,转换环境时直接pull即可,最大程   度的保证了开发环境,正式环境统一

    docker的安装与操作:

    1.uabntu安装docker 

    sudo apt-get install docker

      检查Docker是否安装正确

    sudo docker run hello-world

    出现以下信息,表示安装成功

    为了避免每次命令都输入sudo,可以设置用户权限,注意执行后须注销重新登录

    sudo usermod -a -G docker $USER

    2.启动与停止

      安装完成Docker后,默认已经启动了docker服务,如需手动控制docker服务的启停,可执行如下命令 

    # 启动docker
    sudo service docker start
    
    # 停止docker
    sudo service docker stop
    
    # 重启docker
    sudo service docker restart 

    3. Docker镜像操作 

      3.1 列出镜像

    docker image ls

    这里若出现问题

    解决方法1:获取管理员权限,运行docker命令

      方法2:

    sudo groupadd docker     #添加docker用户组
    sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
    newgrp docker     #更新用户组
    docker ps    #测试docker命令是否可以使用sudo正常使用

    正确出现结果

    • REPOSITORY:镜像所在的仓库名称
    • TAG:镜像标签
    • IMAGEID:镜像ID
    • CREATED:镜像的创建日期(不是获取该镜像的日期)
    • SIZE:镜像大小

      3.2  拉取镜像

        要获取某个镜像,可以使用pull命令。如:    

    docker image pull hello-world

      3.3 删除镜像

    docker image rm 镜像名或镜像id

    4. Docker容器操作

    docker run [option] 镜像名 [向启动容器中传入的命令]

    常用可选参数说明:

    • -i 表示以“交互模式”运行容器
    • -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
    • --name 为创建的容器命名
    • -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
    • -d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
    • -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
    • -e 为容器设置环境变量
    • --network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同

      4.1 交互式容器创建 在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。

        命名一个myubantu容器

    docker run -it --name=myubuntu ubuntu /bin/bash    

       4.2 守护式容器创建:创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止

    docker run -dit --name=myubuntu2 ubuntu

       4.3 进入已运行的容器   

    docker exec -it 容器名或容器id 进入后执行的第一个命令

      4.4 查看容器  

    # 列出本机正在运行的容器
    docker container ls
    
    # 列出本机所有容器,包括已经终止运行的
    docker container ls --all

      4.5 停止与启动容器

    # 停止一个已经在运行的容器
    docker container stop 容器名或容器id
    
    # 启动一个已经停止的容器
    docker container start 容器名或容器id
    
    # kill掉一个已经在运行的容器
    docker container kill 容器名或容器id

      4.6 删除容器

    docker container rm 容器名或容器id

    Docker官网:https://www.docker.com/

  • 相关阅读:
    冒泡排序&快速排序
    1252. Cells with Odd Values in a Matrix
    位运算小结
    832. Flipping an Image
    1812. Determine Color of a Chessboard Square
    10、属性、构造函数与析构函数
    09、封装与类成员
    07、面向对象简介
    06、C#异常处理
    03、运算符
  • 原文地址:https://www.cnblogs.com/xiaolu915/p/10536366.html
Copyright © 2020-2023  润新知