zoukankan      html  css  js  c++  java
  • docker(四)docker

     

    docker
    1.虚拟化技术:将不同的资源和逻辑单元剥离,形成松耦合的关系的技术(gartner)
    {将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用}
    虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机上可以运行不同的操作系统,并且应用程序都可以相互独立的空间内运行而互不影响,显著提高计算机的工作效率。

    虚拟化实现了用软件的方法重新划分和定义了IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源的利用率,使资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

    虚拟化的目的就是要对IT基础设施进行简化,可以简化对资源以及对资源管理的访问

    2.docker的优点
    容器技术也能实现在一台硬件机器上虚拟出多个容器,每个容器中都可以放置一个互相隔离的服务器。所以,我们知道,容器其实也采用的是虚拟的方式进行,只不过,同等条件下,容器技术会比虚拟机技术效率要高,但是容器中没有包含独立的操作系统,虚拟机中包含独立的操作系统,所以每台虚拟机中的功能会比每个容器的功能要多些,正因为虚拟机带有很多东西,所以占的系统资源要大,效率要低些。

    所以容器具有简明、轻快等特点

    个人感觉

    我觉得代码的环境分为运行环境和开发环境。运行环境不能直接修改,项目的代码越来越多的情况下,开发环境也会越来越不便测试。因此会有虚拟机这样的技术出现。但是虚拟机是模拟不同的系统环境,是在大的方面对项目代码测试。docker强调容器这一概念。就比如软件结构中的组件,docker容器中只运行其中一个组件的功能。因此测试代码问题会更加的精确。

    3.docker的内部三大核心组件和运行步骤
    3.1docker images
    dockers images也叫做docker镜像,镜像一般是只读模板,用户不可以直接对其进行写入操作。使用镜像为了更好的保证数据的安全。

    镜像就相当于java中的类,这个类可以自己写需要后面的dockerfile技术
    3.2docker containers
    dockers容器,容器与容器之间相互隔离,互不干扰容器可以进行开始,启动,删除,停止的操作。开发者快速地吧自己的应用打包到容器中进行发布

    容器相当于是java中的对象

    3.3docker register
    docker仓库,下载上传镜像

    这个就是相当于Java的类库了,当然了可以这么理解,但是之间肯定会有相应的区别。

    下载

    https://docs.docker.com/install/linux/docker-ce/centos/官网下载linux版本的docker-ce。

    注意下载社区版的。跟着教程一步一步来就行。

    docker 命令

    systemctl enable docker开机自启动
    /etc/docker/daemon.json 改镜像地址

    $ docker ps // 查看所有正在运行容器
    $ docker stop containerId // containerId 是容器的ID

    $ docker ps -a // 查看所有容器
    $ docker ps -a -q // 查看所有容器ID

    $ docker stop $(docker ps -a -q) //  stop停止所有容器
    $ docker  rm $(docker ps -a -q) //   remove删除所有容器

    Docker基本命令:
    0.开启一个已停止的容器
    docker start images-id
    1.从DockerHub上检索(查询)镜像:docker search [options --no-trunc:完整镜像描述 -s:列出收藏不小于指定的镜像 --automated:只列出automated build类型的镜像]

    2.拉取镜像 docker pull images_name[:TAG(版本号,若未指定,默认为latest(最新版)]

    3.列出本地镜像 docker images [options -a 列出本地所有的镜像(含中间映像层)-q 只显示镜像id --digests 显示镜像的摘要信息 --no-trunc:显示完整的镜像信息]
    选项说明(
    REPOSITORY:表示镜像的仓库源

      TAG:镜像的标签(版本)

      IMAGEID:镜像ID

      CREATED:镜像创建时间

      SIZE:镜像大小

    4.删除镜像
    docker rmi -f images_name(or images_id)
    docker rmi -f images_name1:TAg images_name2:TAG 多个删除
    docker rmi -f $(docker images -wq) 删除全部镜像
    删除出现多个删除:有多层

    删除镜像时遇到:[No such container]
    service docker stop
    rm -rf /var/lib/docker
    sudo service docker restart(重启docker服务)
    注:
    docker service docker stop(关闭docker服务)
    docker service docker start(开启docker服务)
    5.镜像变更历史
    docker history images_id或者名称
    6. docker save -o 镜像名称[Tag]
    将镜像保存到本地磁盘

    7.https://blog.csdn.net/magerguo/article/details/72514813/
    将docker挂载目录

    8.run命令基本参数
    -p :指定容器暴露的端口
    -v:给同期挂载存储卷,挂载到容器的某个目录
    -d:指定容器运行于前台还是后台,默认为false(运行一个带命令在后台不断执行的容器,不直接展示容器内部信息)
    -i:打开stdin用于控制台交互
    -t:分配tty设备,可以支持终端登陆,默认为false
    --rm:清除foreground容器,设置在容器退出时自动清理容器内部的文件系统,对detached容器无效,默认为true(容器在他的进程结束后姨妈自动删除)
    -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。

    9.退出容器
    exit
    CTRL +p+q


    10.将容器挂到后台,docker run -dit openjdk /bin/bash
    docker exec -it 933 bash
    docker run -it -v /home/mushui/test_java:/home/code openjdk /bin/bash(将宿主机的目录挂载到虚拟机)

    home/service/dockers-tomcat

    11.docker 相关信息查询
    容器中查看容器Linux版本
    进入容器后,cat /etc/issue
    查看docker容器或镜像的详细信息
    docker inspect 容器id
    容器占用查询
    ps -ef|grep 容器id
    root 7358 12956 0 09:14 ? 00:00:00 containerd-shim -namespace moby -workdir (示例输出)
    top -p 7358(pid 进程的id)
    参数说明:
    PID:进程的ID
    USER:进程所有者
    PR:进程的优先级别,越小越优先被执行
    NInice:值
    VIRT:进程占用的虚拟内存
    RES:进程占用的物理内存
    SHR:进程使用的共享内存
    S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
    %CPU:进程占用CPU的使用率
    %MEM:进程使用的物理内存和总内存的百分比
    TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
    COMMAND:进程启动命令名称

    12.docker system df
    查看是否有容器,镜像在运行

  • 相关阅读:
    2020牛客暑期多校训练营(第二场)Interval 网络流平面图转化成最短路
    [P4001 [ICPC-Beijing 2006]狼抓兔子]
    [2020牛客暑期多校训练营(第二场)Greater and Greater]
    [2020牛客暑期多校训练营(第二场)All with Pairs]
    2020牛客暑期多校训练营(第二场)[ Boundary]
    数据结构的特性
    centos7 pgsql启动异常问题
    go实现服务授权
    go 使用线程池做请求限流
    go实现爬虫
  • 原文地址:https://www.cnblogs.com/mushuise/p/12121151.html
Copyright © 2011-2022 走看看